我正在使用以下代码。在这里,我需要的是edittext1
的焦点,直到用户进行有效的输入,并且它可以传递下一个edittext2
的请求焦点。我在这里出错的地方。
public void afterTextChanged(Editable s) {
if(editext1.getText().toString().length()==2)
{
if(Integer.parseInt(editext1.getText().toString()) >= 51)
{
Toast.makeText(getApplicationContext(),"Error: It shouldn't be above 50",Toast.LENGTH_SHORT).show();
editext1.setError("Please Check");
editext1.requestFocus();
}
}
else
return;
editext2.requestFocus();
}
此处edittext1
的允许值是0到50。如果用户输入的值大于50,则应保留在该位置。如果它们输入0到50,则下一个requestfocus();
上应该是edittext1
。但是上面的代码甚至跳到了51 {p>以上,都跳到了下一个editext2
答案 0 :(得分:1)
注意以下几行:
else
return; //already returned before editext2.requestFocus();comment or delete this line.
editext2.requestFocus();
已编辑:
if(editext1.getText().toString().length()==2)
{
if(Integer.parseInt(editext1.getText().toString()) >= 51)
{
Toast.makeText(getApplicationContext(),"Error: It shouldn't be above 50",Toast.LENGTH_SHORT).show();
editext1.setError("Please Check");
editext1.requestFocus();
}
else{
editext2.requestFocus();
}
}
答案 1 :(得分:0)
调用requestFocus()时出现问题。 它应该称为
public void afterTextChanged(Editable s) {
if (editext1.getText().toString().length() == 2) {
if (Integer.parseInt(editext1.getText().toString()) <= 50) {
editext2.requestFocus();
return;
} else {
Toast.makeText(getApplicationContext(), "Error: It shouldn't be above 50", Toast.LENGTH_SHORT).show();
editext1.setError("Please Check");
editext1.requestFocus();
}
}
}
答案 2 :(得分:0)
如果需要,也需要处理内部。因此,如果条件为,则从inner返回
public void afterTextChanged(Editable s) {
if(editext1.getText().toString().length()==2)
{
if(Integer.parseInt(editext1.getText().toString()) >= 51)
{
Toast.makeText(getApplicationContext(),"Error: It shouldn't be above 50",Toast.LENGTH_SHORT).show();
editext1.setError("Please Check");
editext1.requestFocus();
return; //Add this line only
}
}
else
return;
editext2.requestFocus();
}