如何在Android中处理未填充的EditText

时间:2015-08-19 19:28:31

标签: android variables input error-handling null

我想用3个输入(NUM1,NUM2,NUM3),3个按钮(SUM,SUB,MUL)和1个RESULT文本平面编写一个简单的计算器。在我的应用程序中如果我提供所有输入,该应用程序正常工作。但是,如果我没有为1个字段提供任何输入,我会遇到app停止错误。我想让我的应用程序可以使用任意数量的输入。

这是我的代码。

public void onButtonClickSum(View v){
    EditText e1 = (EditText)findViewById(R.id.editText);
    EditText e2 = (EditText)findViewById(R.id.editText2);
    EditText e3 = (EditText)findViewById(R.id.editText3);

    TextView t1 = (TextView)findViewById(R.id.textView2);

    int num1 = Integer.parseInt(e1.getText().toString());
    int num2 = Integer.parseInt(e2.getText().toString());
    int num3 = Integer.parseInt(e3.getText().toString());

    int sum = num1 + num2 + num3;

    t1.setText(Integer.toString(sum));

}

public void onButtonClickSub(View v){
    EditText e1 = (EditText)findViewById(R.id.editText);
    EditText e2 = (EditText)findViewById(R.id.editText2);
    EditText e3 = (EditText)findViewById(R.id.editText3);

    TextView t1 = (TextView)findViewById(R.id.textView2);

    int num1 = Integer.parseInt(e1.getText().toString());
    int num2 = Integer.parseInt(e2.getText().toString());
    int num3 = Integer.parseInt(e3.getText().toString());

    int sub = num1 - num2 - num3;

    t1.setText(Integer.toString(sub));
}

public void onButtonClickMul(View v){
    EditText e1 = (EditText)findViewById(R.id.editText);
    EditText e2 = (EditText)findViewById(R.id.editText2);
    EditText e3 = (EditText)findViewById(R.id.editText3);

    TextView t1 = (TextView)findViewById(R.id.textView2);

    int num1 = Integer.parseInt(e1.getText().toString()); 
    int num2 = Integer.parseInt(e2.getText().toString());
    int num3 = Integer.parseInt(e3.getText().toString());

    int mul = num1 * num2 * num3;

    t1.setText(Integer.toString(mul));
}

3 个答案:

答案 0 :(得分:1)

  • 在将输入解析为整数
  • 之前,需要输入空或空检查
  • 尝试创建EditText对象字段,因为您在每个方法中重复使用它们

示例:

// Fields
private EditText mEditText1 = (EditText)findViewById(R.id.editText);
private EditText mEditText2 = (EditText)findViewById(R.id.editText2);
private EditText mEditText3 = (EditText)findViewById(R.id.editText3);
private TextView mTextView = (TextView)findViewById(R.id.textView2);

public void onButtonClick(View v){
  int num1 = 0;
  int num2 = 0;
  int num3 = 0;

  String e1 = mEditText1.getText();
  String e2 = mEditText2.getText();
  String e3 = mEditText3.getText();

  if(!e1.isEmpty()) {
    num1 = Integer.parseInt(e1);
  }
  if(!e2.isEmpty()){
    num2 = Integer.parseInt(e2);
  }
  if(!e3.isEmpty()){
    num3 = Integer.parseInt(e3);
  }

  int sub = num1 - num2 - num3;

  mTextView.setText(Integer.toString(sub));
}

答案 1 :(得分:0)

改变
int num1 = Integer.parseInt(e1.getText().toString());
int num2 = Integer.parseInt(e2.getText().toString());
int num3 = Integer.parseInt(e3.getText().toString());

int num1 = 0, num2 = 0, num3 = 0;
int num1_error = 0, num2_error = 0, num3_error = 0;
try{
  num1 = Integer.parseInt(e1.getText().toString());
}Catch(Exception e){
  num1_error = 1;
}

try{
  num2 = Integer.parseInt(e2.getText().toString());
}Catch(Exception e){
  num2_error = 1;
}

try{
  num3 = Integer.parseInt(e3.getText().toString());
}Catch(Exception e){
  num3_error = 1;
}

// for addition
    int sum = 0;
    if(num1_error == 0){
      sum += num1;
    }

    if(num2_error == 0){
      sum += num2;
    }

    if(num1_error == 0){
      sum += num3;
    }

    t1.setText(Integer.toString(sum));

// for subtraction
    int sub = 0;
    if(num1_error == 0){
      sub = num1 - sub;
    }

    if(num2_error == 0){
      sub = sub - num2;
    }

    if(num3_error == 0){
      sub = sub - num3;
    }

    t1.setText(Integer.toString(sub));

// for multiplication
    int mul = 1;
    if(num1_error == 0){
      mul = mul*num1;
    }

    if(num2_error == 0){
      mul = mul*num2;
    }

    if(num3_error == 0){
      mul = mul*num3;
    }

    t1.setText(Integer.toString(mul));

答案 2 :(得分:0)

尝试这样做,对其他方法也一样:

EditText e1 ,e2, e3;
TextView t1;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        e1 = (EditText)findViewById(R.id.editText);
        e2 = (EditText)findViewById(R.id.editText2);
        e3 = (EditText)findViewById(R.id.editText3);

        t1 = (TextView)findViewById(R.id.textView2);
     }
    public void onButtonClickSum(View v){
    if(e1.getText().toString().length()==0){
    e1.setError("Required");
    }
    else if(e2.getText().toString().length()==0){
    e2.setError("Required");
    }
    else if(e3.getText().toString().length()==0){
    e3.setError("Required");
    }
    else{
        int num1 = Integer.parseInt(e1.getText().toString());
        int num2 = Integer.parseInt(e2.getText().toString());
        int num3 = Integer.parseInt(e3.getText().toString());

        int sum = num1 + num2 + num3;

        t1.setText(Integer.toString(sum));
    }
    }