我的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();
}
答案 0 :(得分:1)
修改您的validate.RollIdAlert()方法,使其包含3d参数:EditText et
在您要关闭警报对话框的监听器中,在dismiss();
之后,放置以下行:
et.requestFocus();
et.setSelection(0);