Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Imagebutton Cambiar imagen OnClick

Acabo de añadir una nueva carpeta dibujable en la carpeta Res. En la carpeta dibujable, copié el archivo ic_launcher.png de la carpeta drawable-hdpi. Quiero cambiar la imagen estándar ImageButton a través de la nueva cuando presiono el botón. Escribí algún código, pero cuando inicie la aplicación se bloquea.

Button imgButton; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.imgButton).setOnClickListener(imgButtonHandler); } View.OnClickListener imgButtonHandler = new View.OnClickListener() { public void onClick(View v) { imgButton.setBackgroundResource(R.drawable.ic_launcher); } }; 

EDIT: He cambiado a esto, y esto tampoco funciona.

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imgButton = (Button) findViewById(R.id.imgButton); imgButton.setOnClickListener(imgButtonHandler); } View.OnClickListener imgButtonHandler = new View.OnClickListener() { public void onClick(View v) { imgButton.setBackgroundResource(R.drawable.ic_launcher); } }; 

EDIT 2: ESTO TRABAJA. Gracias a todos.

 ImageButton button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button= (ImageButton)findViewById(R.id.imgButton); button.setOnClickListener(imgButtonHandler); } View.OnClickListener imgButtonHandler = new View.OnClickListener() { public void onClick(View v) { button.setBackgroundResource(R.drawable.ic_launcher); } }; 

5 Solutions collect form web for “Android Imagebutton Cambiar imagen OnClick”

Esto me engañó un poco – debería ser "setImageResource" en lugar de "setBackgroundResource" 🙂 !!

Lo siguiente funciona bien:

 ImageButton btn = (ImageButton)findViewById(R.id.imageButton1); btn.setImageResource(R.drawable.actions_record); 

Mientras que cuando se utiliza el setBackgroundResource la imagen del imagebutton real permanece mientras se cambia la imagen de fondo witch conduce a un objeto feo buscando imagebutton

Gracias.

Esto es porque imgButton es null. Prueba esto en su lugar:

 findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search); 

O mucho más fácil de leer:

 imgButton = (Button) findViewById(R.id.imgButton); imgButton.setOnClickListener(imgButtonHandler); 

Luego en onClick: imgButton.setBackgroundResource(R.drawable.ic_action_search);

 <ImageButton android:src="@drawable/image_btn_src" ... /> 

Image_btn_src.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/icon_pressed"/> <item android:state_pressed="false" android:drawable="@drawable/icon_unpressed"/> </selector> 

Puedes hacerlo bien en tu archivo XML:

 android:onClick="@drawable/ic_action_search" 

Usted tiene asing botón a su variable imgButton :

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imgButton = (Button) findViewById(R.id.imgButton); imgButton.setOnClickListener(imgButtonHandler); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.