在onFocusChange中验证

时间:2013-04-25 20:56:20

标签: android

我有多个EditTexts。 如何验证EditTextEditText的{​​{1}}是否有EditText,如果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; 是“”,那么我希望用户在转到edittext2之前必须输入一个数字 怎么办呢?

{{1}}

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

有点迟到的答案,但您可以查看针对Android应用程序的BARACUS框架中实现的declarative form validation techniquesadvanced validation,以解决Android应用中的验证问题。由于这些东西是开源的,所以如果您不想使用框架,请随意使用源代码碎片来处理验证。