如何解决android中的NullPointer异常?

时间:2012-11-26 06:10:54

标签: java android nullpointerexception android-edittext

这是一个简单的Android应用程序。它在执行时显示nullpointerexception。 我无法从edittext获得价值。在这里,我只想从edittext获取值。 但它显示nullpointerexception ..

如何解决这个问题?

public class Calci extends Activity  {
    Button add;
    String str1;
    String str2;
    EditText txt1;
    EditText txt2;
    TextView tv;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calci);

        add=(Button) findViewById(R.id.button1);
        txt1=(EditText) findViewById(R.id.editText1);
        str1=txt1.getText().toString();
        txt2=(EditText) findViewById(R.id.editText2);
        str2=txt2.getText().toString();
        tv=(TextView) findViewById(R.id.textView4);

        addition();

        add.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                addition(); 
            }
        });
    }


    private void addition(){
        int res=0;
        res=Integer.parseInt(str1)+Integer.parseInt(str2);
        tv.setText(String.valueOf(res));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_calci, menu);
        return true;
    }
}

4 个答案:

答案 0 :(得分:2)

只需从addition();移除onCreate()即可。我怀疑第一次叫你的EditTexts是空的。

另外,当您拨打addition()方法时,您必须同时从EditTexts获取文字。

您的方法addition()类似,

 private void addition()
 {

  int res=0;
  str1=txt1.getText().toString();
  str2=txt2.getText().toString();
  res=Integer.parseInt(str1)+Integer.parseInt(str2);
  tv.setText(String.valueOf(res));
 }

答案 1 :(得分:2)

确保在xml中设置editText1editText2的默认值,或者如果要访问用户输入的值,则将代码设置为,并在setOnClickListener之前删除addition():

      //  addition();  comment this line 
        add.setOnClickListener(new View.OnClickListener() 
        {

            public void onClick(View v) 
            {
                  str1=txt1.getText().toString();
                  str2=txt2.getText().toString();
                  addition(); 

            }
        });

答案 2 :(得分:1)

只需替换oncreate()中的addition()方法,然后按如下所示更改方法

private void addition()
  {
         str1= str1==null?"0":str1;// do like this, so that if str1 returns null then it will be replaced by 0
         str2= str2==null?"0":str2;
         int res=0;
         res=Integer.parseInt(str1)+Integer.parseInt(str2);
         tv.setText(String.valueOf(res));
  }

答案 3 :(得分:0)

你不在这里调用add()这个方法:

        str2=txt2.getText().toString();
        tv=(TextView) findViewById(R.id.textView4);

        //addition();


        add.setOnClickListener(new View.OnClickListener()