Я пытаюсь настроить систему для проверки ввода пользователя, в этом случае просто проверяя, что пользователь вводит что-либо.Сохранение фокуса на Edittext внутри OnFocusChanged Listener
У меня есть Utility class
, который проверяет, что у данных EditText
есть данные.
Я использую OnFocusChangeListener
, который затем вызывает метод из Utility class
.
Это код из activity
:
editText = (EditText) view.findViewById(R.id.editText);
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
if (Utility.checkInput(editText) == false) {
Toast.makeText(getActivity(), "Enter value!",
Toast.LENGTH_SHORT).show();
// TODO....
// Retain focus - do not allow user to move on.
// This is where I am lost...
}
}
}
});
Это код из Utility class
:
public class Utility {
public static boolean checkInput(EditText editText) {
if (editText.getText().length() != 0) {
return true;
}
return false;
}
//.../
Где я озадачен, как сохранить фокус, если входной контроль возвращает false. Я хочу, чтобы пользователь не двигался вперед. Я уверен, что есть простое решение, но я его не нашел.
Мне также интересно, повлияет ли это на
xml
ime.Options
.
Спасибо.
EDIT
Это мой XML:
<EditText
android:imeOptions="actionDone"
android:inputType="textPersonName"
android:maxLength="24"/>
<spinner ../
<EditText
android:imeOptions="actionDone"
android:inputType="phone"
android:maxLength="12"/>
Когда я использую:
if (!hasFocus) {
if (Utility.checkInput(name) == false) {
Toast.makeText(AddDriverUserActivity.this, "Enter value!",Toast.LENGTH_SHORT).show();
name.requestFocus();
}
}
Проблема заключается в том, я использую действие сделано (чтобы скрыть клавиатура), поскольку пользователь затем выбирает из счетчика, затем переходит к следующему EditText
. Так тост не показывать, пока я не коснуться следующего редактирования текста (телефона) и фокус затем устанавливается на два редактирования текстов:
Когда сброс:
android:imeOptions="actionDone"
в actionNext
это показывает тост, а затем переходит к следующему редактору, как показано на снимке экрана, оба фокусируются.
Request focus
не мешает ему перейти от edittext.
Я просто осуществить проверку, когда я представить все поля, однако должен быть способ сделать это шаг мудрый .... hm –