在我的android项目java.lang.nullpointer exception..Attempt调用虚方法setOnclickListner

时间:2015-06-26 04:44:52

标签: android nullpointerexception onclicklistener nullreferenceexception

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

   }

4 个答案:

答案 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) {

    }

    }