如果没有输入任何东西,为什么editText使程序停止

时间:2013-05-19 07:49:10

标签: android button android-edittext

我是新人。我有2个editText和1个TextView,1个按钮。我想从2输入求和。如果我输入所有editText,它的成功。但如果我没有输入,那么申请就会停止。

package panda.c;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;




public class calculate extends Activity implements OnClickListener {
/** Called when the activity is first created. */

EditText input1,input2;
Button sum;
TextView total;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.calcu);

input1 = (EditText) findViewById(R.id.input1);
input2 = (EditText) findViewById(R.id.input2);
total = (EditText) findViewById(R.id.total);
sum = (Button) findViewById(R.id.sum);
sum.setOnClickListener(this);

}

public void onClick(View v) {

int inputt1 = Integer.parseInt(input1.getText().toString());
int inputt2 = Integer.parseInt(input2.getText().toString());

switch (v.getId()) {                    
case R.id.sum:

sum.setText(Integer.toString(inputt1+inputt2));

break;
default:
break;
}}}

我没有输入任何东西。我只点击了总和,然后程序停止了。但如果我输入所有editText,我点击总和,它的工作。为什么?我想如果我不输入,点击总和,应用程序仍然运行。

4 个答案:

答案 0 :(得分:2)

它被称为NullPointerException。您正在尝试将null解析为integer。您需要将解析语句括在try块和catch NullPointerException中,并将一些默认值设置为inputt1inputt2,或通知用户放置Toast的某些值。

校正

这不是NullPointerException,而是NumberFormatException

答案 1 :(得分:2)

这是因为如果一个字段留空,Integer.parseInt()将失败。如果该字段留空,则应将默认值设置为0,以使其不会强制关闭。

这是一个简单的解决方案,用于检查它是否为空并默认使用0:

int inputt1 = input1.getText().toString().equals("") ? 0 : Integer.parseInt(input1.getText().toString());
int inputt2 = input2.getText().toString().equals("") ? 0 : Integer.parseInt(input2.getText().toString());

另外,将android:inputType="number"设置为EditText,这样您就可以将输入限制为仅限于数字。

编辑:更新了代码,使其与所有API级别兼容。

答案 2 :(得分:1)

这是因为您正在使用Integer.parseInt()并在其中解析""。这肯定会给你NumberFormat异常。

试试这个......

if(!(input1.getText().toString().trim().equals(""))){
inputt1 = Integer.parseInt(input1.getText().toString());
}

同样适用于其他输入..

希望这有帮助,..

答案 3 :(得分:0)

OnClick()方法中的代码片段如下:

int inputt1 = 0;
int inputt2 = 0;
try {
    inputt1 = Integer.parseInt(input1.getText().toString());
    inputt2 = Integer.parseInt(input2.getText().toString());
}
catch (NumberFormatException e) {
//notify the user here somehow or just leave empty
//or just return, if you don't want to sum default values
}