这是一个简单的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;
}
}
答案 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中设置editText1
和editText2
的默认值,或者如果要访问用户输入的值,则将代码设置为,并在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()