0

我有多个EditTexts. 我如何验证是否EditText有“”,EditText如果EditText是“”,那么我希望用户在进入edittext2之前必须输入一个数字怎么做?

case R.id.P2Throw1Set2:
    p212r.setText(String.valueOf(Integer.parseInt(p2score.getText().toString()) - Integer.parseInt(p212.getText().toString())));
    p2score.setText(String.valueOf(Integer.parseInt(p212r.getText().toString())));
    break;
case R.id.P2Throw2Set2:
    p222r.setText(String.valueOf(Integer.parseInt(p2score.getText().toString()) - Integer.parseInt(p222.getText().toString())));
    p2score.setText(String.valueOf(Integer.parseInt(p222r.getText().toString())));
    break;
case R.id.P2Throw3Set2:
    p232r.setText(String.valueOf(Integer.parseInt(p2score.getText().toString()) - Integer.parseInt(p232.getText().toString())));
    p2score.setText(String.valueOf(Integer.parseInt(p232r.getText().toString())));
    break;
case R.id.P2Throw4Set2:
    p242r.setText(String.valueOf(Integer.parseInt(p2score.getText().toString()) - Integer.parseInt(p242.getText().toString())));
    p2score.setText(String.valueOf(Integer.parseInt(p242r.getText().toString())));
    break;
4

2 回答 2

0

您将不得不禁用除第一个编辑文本之外的所有文本,并且仅在用户提供令人满意的输入时才启用它们。然后将您的 parseInt() 调用包装在 try/catch 块中,如下所示:

case R.id.P2Throw2Set2:
    try
    {
        p222r.setText(String.valueOf(Integer.parseInt(p2score.getText().toString()) -
            Integer.parseInt(p222.getText().toString())));
        p2score.setText(String.valueOf(Integer.parseInt(p222r.getText().toString())));

        // if the previous lines worked, this will work
        p232r.setEnabled(true);
    }
    catch(NumberFormatException e)
    {
        // user entered "" or the value was null
        // in this case, we leave the next edit text disabled
    }
    break;
于 2013-04-25T21:14:26.730 回答
0

答案有点晚了,但您可以看看 BARACUS 框架中为 Android 应用程序实现的声明性表单验证技术高级验证,以应对 Android 应用程序中的验证问题。由于这些东西是开源的,如果您不想使用框架,请随意使用应对验证的源代码片段。

于 2014-10-16T06:22:42.850 回答