如何解决请求重点关注edittext不能正常工作
我有4个编辑文本,它们充当“输入您的密码”字段,每个编辑文本都设置为在请求将焦点移到下一个编辑文本之前只能采用一个数字。如果我为第一个图钉输入一个数字,它会要求将焦点放在第二个,然后是第三个,依此类推。
我现在想做的是,如果用户单击第二个编辑文本或第三个,而未输入第一个字段,则应返回并集中在第一个字段上。
我尝试使用onTouchListener来执行此操作,并且我注意到的是,先单击第二个Edittext而不是单击左侧的第一个edittext,我可以看到焦点回到了第一个edittext,但随后立即返回到第二个编辑文本几乎一秒钟,最终仍然集中在第二个编辑文本上。
我还使用onClickListener进行了测试。它确实可以工作,但是需要两次单击。因此,我将单击第二个编辑文本,没有任何反应,然后再次单击它,然后将焦点移回第一个编辑文本,但是我需要在第一次单击时进行。
这是代码的一部分
pin1EditTxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s,int start,int count,int after) {
}
@Override
public void onTextChanged(CharSequence s,int before,int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(pin1EditTxt.getText().toString().length()==1) //size as per your requirement
{
pin2EditTxt.requestFocus();
}
}
});
// pin2EditTxt.setOnTouchListener(new View.OnTouchListener() {
// @Override
// public boolean onTouch(View v,MotionEvent event) {
// if(pin1EditTxt.length() == 0){
// pin2EditTxt.clearFocus();
// pin1EditTxt.requestFocus();
// }
// return false;
// }
// });
pin2EditTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(pin1EditTxt.length() == 0){
pin1EditTxt.requestFocus();
}
}
});
pin2EditTxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s,int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(pin2EditTxt.getText().toString().length()==1) //size as per your requirement
{
pin3EditTxt.requestFocus();
}
}
});
pin3EditTxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s,int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(pin3EditTxt.getText().toString().length()==1) //size as per your requirement
{
pin4EditTxt.requestFocus();
}
}
});
pin4EditTxt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s,int count) {
}
@Override
public void afterTextChanged(Editable s) {
//Hide keyboard
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0);
editTxtWrapper.requestFocus();
}
});
解决方法
我想您应该在onclick中使用pin1EditTxt.getText()。toString()。length()== 0而不是pin1EditTxt.length()== 0)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。