Attempt to invoke virtual method void android.widget.Button.setonClickListner on a null object reference
我已检查了我的XML
文件,并且所有按钮都有正确的ID,但此错误仍然存在。
Activity_main.java
e1=(EditText)findViewById(R.id.editText);
e1.setCursorVisible(false);
b1=(Button)findViewById(R.id.one);
b2=(Button)findViewById(R.id.two);
b3=(Button)findViewById(R.id.three);
b4=(Button)findViewById(R.id.four);
b5=(Button)findViewById(R.id.five);
b6=(Button)findViewById(R.id.six);
b7=(Button)findViewById(R.id.seven);
b8=(Button)findViewById(R.id.eight);
b9=(Button)findViewById(R.id.nine);
b0=(Button)findViewById(R.id.zero);
minus=(Button)findViewById(R.id.minus);
plus=(Button)findViewById(R.id.plus);
dot=(Button)findViewById(R.id.dot);
multi=(Button)findViewById(R.id.multi);
divide=(Button)findViewById(R.id.divide);
equals=(Button)findViewById(R.id.equals);
del=(Button)findViewById(R.id.del);
ac=(Button)findViewById(R.id.ac);
sqrt=(Button)findViewById(R.id.sqrt);
sin=(Button)findViewById(R.id.sin);
cos=(Button)findViewById(R.id.cos);
tan=(Button)findViewById(R.id.tan);
plusminus=(Button)findViewById(R.id.plusminus);
inverse=(Button)findViewById(R.id.inverse);
power=(Button)findViewById(R.id.power);
exp=(Button)findViewById(R.id.exp);
log=(Button)findViewById(R.id.log);
pie=(Button)findViewById(R.id.pie);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
b4.setOnClickListener(this);
b5.setOnClickListener(this);
b6.setOnClickListener(this);
b7.setOnClickListener(this);
b8.setOnClickListener(this);
b9.setOnClickListener(this);
b0.setOnClickListener(this);
minus.setOnClickListener(this);
plus.setOnClickListener(this);
dot.setOnClickListener(this);
multi.setOnClickListener(this);
divide.setOnClickListener(this);
equals.setOnClickListener(this);
del.setOnClickListener(this);
ac.setOnClickListener(this);
sqrt.setOnClickListener(this);
sin.setOnClickListener(this);
cos.setOnClickListener(this);
tan.setOnClickListener(this);
plusminus.setOnClickListener(this);
inverse.setOnClickListener(this);
power.setOnClickListener(this);
exp.setOnClickListener(this);
log.setOnClickListener(this);
pie.setOnClickListener(this);
}
答案 0 :(得分:0)
在致电setOnClickListener()
myButton = (Button) findViewById(R.id.btn1);
myButton.setOnClickListener... //add listener after initialization or else it will throw this exception
答案 1 :(得分:0)
确保您在findViewById中传递的ID与在xml文件中声明的ID相同
答案 2 :(得分:0)
活动中按钮的典型用法如下:
public class MyActivity extends Activity {
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.content_layout_id);
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
}
}
XML布局中的按钮例如:
<Button
android:id="@+id/button_id"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
答案 3 :(得分:0)
在setContentView()
方法后初始化按钮。确保您正在实施OnClickListner
方法。
public class MyActivity extends Activity implements View.OnClickListener {
protected void onCreate(Bundle bundle) {
super.onCreate(budle);
setContentView(R.layout.content_layout_id);
e1 = (EditText) findViewById(R.id.editText);
e1.setCursorVisible(false);
b1 = (Button) findViewById(R.id.one);
b2 = (Button) findViewById(R.id.two);
b3 = (Button) findViewById(R.id.three);
b4 = (Button) findViewById(R.id.four);
b5 = (Button) findViewById(R.id.five);
b6 = (Button) findViewById(R.id.six);
b7 = (Button) findViewById(R.id.seven);
b8 = (Button) findViewById(R.id.eight);
b9 = (Button) findViewById(R.id.nine);
b0 = (Button) findViewById(R.id.zero);
minus = (Button) findViewById(R.id.minus);
plus = (Button) findViewById(R.id.plus);
dot = (Button) findViewById(R.id.dot);
multi = (Button) findViewById(R.id.multi);
divide = (Button) findViewById(R.id.divide);
equals = (Button) findViewById(R.id.equals);
del = (Button) findViewById(R.id.del);
ac = (Button) findViewById(R.id.ac);
sqrt = (Button) findViewById(R.id.sqrt);
sin = (Button) findViewById(R.id.sin);
cos = (Button) findViewById(R.id.cos);
tan = (Button) findViewById(R.id.tan);
plusminus = (Button) findViewById(R.id.plusminus);
inverse = (Button) findViewById(R.id.inverse);
power = (Button) findViewById(R.id.power);
exp = (Button) findViewById(R.id.exp);
log = (Button) findViewById(R.id.log);
pie = (Button) findViewById(R.id.pie);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
b4.setOnClickListener(this);
b5.setOnClickListener(this);
b6.setOnClickListener(this);
b7.setOnClickListener(this);
b8.setOnClickListener(this);
b9.setOnClickListener(this);
b0.setOnClickListener(this);
minus.setOnClickListener(this);
plus.setOnClickListener(this);
dot.setOnClickListener(this);
multi.setOnClickListener(this);
divide.setOnClickListener(this);
equals.setOnClickListener(this);
del.setOnClickListener(this);
ac.setOnClickListener(this);
sqrt.setOnClickListener(this);
sin.setOnClickListener(this);
cos.setOnClickListener(this);
tan.setOnClickListener(this);
plusminus.setOnClickListener(this);
inverse.setOnClickListener(this);
power.setOnClickListener(this);
exp.setOnClickListener(this);
log.setOnClickListener(this);
pie.setOnClickListener(this);
}
@Override
public void onClick(View v) {
}
}