我正在做一个简单的程序,用于添加从 EditText 输入的两个数字。 但是,当用户单击“单击以添加”按钮,将字段留空时,程序退出并显示“不幸的是,程序已停止。”
代码如下:
public class MainActivity extends Activity {
long a, b, sum;
Button add, clr;
EditText e1, e2, res;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
add = (Button) findViewById(R.id.bAdd);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) throws NumberFormatException {
// TODO Auto-generated method stub
e1 = (EditText) findViewById(R.id.tv1);
String str1 = e1.getText().toString();
e2 = (EditText) findViewById(R.id.tv2);
String str2 = e2.getText().toString();
try{
a = Integer.parseInt(str1);
b = Integer.parseInt(str2);
}catch(NumberFormatException e){
res.setText("Please enter valid entries");
}
sum = a + b;
res = (EditText) findViewById(R.id.result);
res.setText("Your sum is " + sum);
}
});
clr = (Button) findViewById(R.id.bClr);
clr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) throws NumberFormatException {
// TODO Auto-generated method stub
e1.setText("");
e2.setText("");
res.setText("");
}
});
}
}
我希望应用对空白的 EditText 条目响应“请输入有效条目”。
最佳答案
你的线路:
res = (EditText) findViewById(R.id.result);
必须移动以便在使用 res.setText
之前初始化 res 变量。它没有在你的 catch 语句中初始化。
将其移动到如下所示的位置。您可以在执行其他操作时初始化它 findViewById
e1 = (EditText) findViewById(R.id.tv1);
e2 = (EditText) findViewById(R.id.tv2);
res = (EditText) findViewById(R.id.result);
关于android - 不幸的是Android应用程序已停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13856461/