android图片button更改图片OnClick

我只是在res文件夹下添加了一个新的可绘制文件夹。 在drawable文件夹中,我从drawable-hdpi文件夹复制了ic_launcher.png文件。 当我按下button时,我想要更改标准的ImageButton图像。 我写了一些代码,但是当我启动应用程序崩溃。

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); } }; 

编辑:我改变了这一点,这也不起作用。

 @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); } }; 

编辑2:这个作品。 谢谢大家。

 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); } }; 

Solutions Collecting From Web of "android图片button更改图片OnClick"

这误导了我一点 – 它应该是“setImageResource”,而不是“setBackgroundResource” :)!

以下工作正常:

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

而在使用setBackgroundResource ,实际的图像button的图像保持在背景图像被改变时导致看起来丑陋的图像button对象

谢谢。

那是因为imgButton为空。 试试这个:

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

或者更容易阅读:

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

然后在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> 

你可以在你的XML文件中做到这一点:

 android:onClick="@drawable/ic_action_search" 

你有button到你的imgButtonvariables:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imgButton = (Button) findViewById(R.id.imgButton); imgButton.setOnClickListener(imgButtonHandler); }