public class Game_Screen extends ActionBarActivity {
ImageButton b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_menue);
ImageButton b1 = (ImageButton) findViewById((R.id.imbttn1));
}
public void test(View v){
v.setBackgroundResource(R.drawable.button_testbackground);
b1.setBackgroundResource(R.drawable.button_testbackground);
}
}
我想在按下一个按钮后更改某些按钮的背景图像。使用View工作正常。但是,如果我尝试更改一个图像按钮,我会从logcat中获取它:
引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.widget.ImageButton.setBackgroundResource(int)' 在com.example.loan.fastclickerv30.Game_Screen.test(Game_Screen.java:43)
这是imagebutton的XML代码:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imbttn1"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/imageView"
android:layout_toStartOf="@+id/textViewLevel"
android:onClick="test" />
答案 0 :(得分:3)
您正在创建b1的局部变量,而不是将其分配给真实变量。使用此代码。
public class Game_Screen extends ActionBarActivity {
ImageButton b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_menue);
b1 = (ImageButton) findViewById((R.id.imbttn1));
}
public void test(View v){
v.setBackgroundResource(R.drawable.button_testbackground);
b1.setBackgroundResource(R.drawable.button_testbackground);
}
}
答案 1 :(得分:2)
您收到NullPointerException
因为b1为空。您有两个b1变量,一个在onCreate
内,另一个在Game_Screen
类中。你永远不会在班级Game_Screen
中分配一个。像这样更改你的代码:
public class Game_Screen extends ActionBarActivity {
ImageButton b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_menue);
b1 = (ImageButton) findViewById((R.id.imbttn1));
}
public void test(View v){
v.setBackgroundResource(R.drawable.button_testbackground);
b1.setBackgroundResource(R.drawable.button_testbackground);
}
}
答案 2 :(得分:1)
Binding
b1可能为空。如果是这种情况,那么您的按钮可能不会像您期望的那样在xml中被称为imbttn1。确认XML中的id并仔细检查b1是否有值。