如何在Android中处理null EditText值?

时间:2014-12-07 17:12:34

标签: android null crash android-edittext

我正在为Android开发一个应用程序,目前它唯一能做的就是计算成绩。有两个输入框,一个取当前成绩,另一个取可能考试成绩,然后它会告诉你最终成绩。但是,当至少其中一个框中没有值时,它会崩溃。我试图创建一个if语句来检测最终值是否为null,但这不起作用。这是我的代码:

public void sendMessage(View view){
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText grade = (EditText) findViewById(R.id.grade1);
    EditText exam = (EditText) findViewById(R.id.grade2);
    String stringGrade = (grade.getText().toString());
    String stringExam = (exam.getText().toString());
    double finalResult = (Double.parseDouble(stringGrade) * .8) + (Double.parseDouble(stringExam) * 0.2);
    String finalResultString = String.valueOf(finalResult);
    if (finalResultString == null){
        finalResultString = "0";
    } else {
    intent.putExtra(EXTRA_MESSAGE, finalResultString);
    startActivity(intent);
}}

以下是呈现它的代码:

Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    TextView textView1 = new TextView(this);
    textView1.setTextSize(30);
    textView1.setText("Your final would be " + message);

    setContentView(textView1);

仅供参考,.8和.2是因为当前成绩加权为80%,考试加权为20%。如何在没有任何东西放入盒子的情况下使它不会崩溃?

2 个答案:

答案 0 :(得分:0)

试试这个:

public void sendMessage(View view){
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText grade = (EditText) findViewById(R.id.grade1);
    EditText exam = (EditText) findViewById(R.id.grade2);
    String stringGrade = (grade.getText().toString());
    String stringExam = (exam.getText().toString());
    if(stringGrade.equals("") ){
       stringGrade = "0";
    }
    if(stringExam.equals("") ){
       stringExam= "0";
    }
    double finalResult = (Double.parseDouble(stringGrade) * .8) + (Double.parseDouble(stringExam) * 0.2);
    String finalResultString = String.valueOf(finalResult);
    if (finalResultString == null){
        finalResultString = "0";
    } else {
    intent.putExtra(EXTRA_MESSAGE, finalResultString);
    startActivity(intent);
}}

答案 1 :(得分:0)

usernameEditText.getText().toString();不会返回null。它将返回一个空字符串。在计算finalResult之前你可以做的是检查stringGrade和stingExam是非空的和数值,如果不是,则停止操作。即。

String stringGrade = (grade.getText().toString());
String stringExam = (exam.getText().toString());

if (stringGrade.isEmpty() || stringExam.isEmpty()) {
    Toast.makeText(this, "Invalid values", Toast.LENGTH_SHORT);
    return;
}