EditText requestfocus直到有效输入

时间:2018-11-12 13:15:20

标签: android android-edittext

我正在使用以下代码。在这里,我需要的是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

3 个答案:

答案 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();
     }