EditText запрос фокусируется до действительной записи - PullRequest
0 голосов
/ 12 ноября 2018

Я использую следующий код. Здесь то, что мне нужно, это то, что 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. Но этот код перескочил на следующий editext2, даже введенный выше 51

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

Обратите внимание на строки:

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();
                }
            }
0 голосов
/ 12 ноября 2018

Вам нужно обращаться с внутренним, если тоже.так что вернитесь из внутреннего, если условие истинно

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();
     }
0 голосов
/ 12 ноября 2018

При вызове 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();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...