1

我的片段中有 3 个 EditText(editText1、editText2 和 editText3)。当我在软键盘上单击“下一步”时,焦点当前转到下一个 EditText。我还检查这些编辑框的内容是否有效(例如有效的电子邮件等)。让我们假设 checkEditText_() 工作正常。

对于editText1,我解决了这样的问题:

editText1.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                (keyCode == KeyEvent.KEYCODE_NAVIGATE_NEXT)) {
            if (!checkEditText1()) { // editText1 content fail
                editText1.clearFocus();
                editText1.requestFocus();
                edi tText1.selectAll();
            } else if (!checkEditText2()) { // editText2 content fail
                editText1.clearFocus();
                editText2.requestFocus();
            } else if (!checkEditText3()){ // editText3 content fail
                editText1.clearFocus();
                editText3.requestFocus();
            }
            return true;
        }
        return false;
    }
});

对于editText1,当它自己的内容没有成功时,它应该保留并保持焦点在自己身上。否则它将专注于其他两个剩余的editText,以推动用户纠正那里的错误。

但是当 checkEditText1() 失败时,它不会像第一个 if 子句那样集中注意力......

如何正确保留在当前的 EditText 中?

4

1 回答 1

0

用这个:

     android:imeOptions="actionDone"

无需监听任何 keyEvent。

于 2018-12-04T14:38:06.780 回答