EditText焦点和光标选择输入到错误的输入字段

时间:2018-08-09 19:00:52

标签: java android android-edittext

我的Android应用程序中有两个EditText字段。当第一个字段中的输入无效时,将触发警报对话框,我尝试将焦点和输入光标切换回无效的EditText字段(RollId),以便可以重新输入。

焦点更改和输入光标实际上似乎起作用了,但是当我再次开始输入时,所有这些都显示在错误的editText(位置)字段中。

final EditText RollId = findViewById(R.id.scan_roll_id);
final EditText Location = findViewById(R.id.scan_location);

RollId.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (!hasFocus) {
            if (validate.ValidateRollId(String.valueOf(RollId.getText()))) {
                // TODO: parse and populate labels
            } else {
                  // Not a valid RollId format
                  AlertDialog alertDialog = new AlertDialog.Builder(MoveMaterialActivity.this).create();
                  validate.RollIdAlert("The scanned Roll Id has the incorrect format. Please enter manually.", alertDialog);
                  TextKeyListener.clear(RollId.getText());
                  RollId.setSelection(0);
                  Location.clearFocus();
                  RollId.requestFocus();
           }
       }
   }
});

我想我基本上是想弄清楚如何阻止来自Location EditText字段的输入,或将其切换到RollId EditText字段。我认为RollId.setSelection(0)将实现这一目标。

编辑:RollIdAlert())

public void RollIdAlert(String message, AlertDialog alert) {
    alert.setTitle("RollId Format Invalid");
    alert.setMessage(message);
    alert.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    alert.show();
}

1 个答案:

答案 0 :(得分:1)

修改您的validate.RollIdAlert()方法,使其包含3d参数:EditText et
在您要关闭警报对话框的监听器中,在dismiss();之后,放置以下行:

          et.requestFocus();
          et.setSelection(0);