ClearFocus возвращает true и вызывает onFocusChange
Эта проблема возникает только в версиях ниже ICS. У меня есть два EditTexts (имя пользователя и пароль). Изначально оба фокуса ложные. По щелчку любого из них я сначала вызываю AlertDialog. При нажатии отрицательной кнопки я очищаю фокус обоих EditTexts. Когда я очищаю фокус второго (пароля) textField, первый автоматически сбрасывается в true.
private void disclaimerDialog() {
dlgAlert = new AlertDialog.Builder(getActivity());
dlgAlert.setTitle(R.string.testApp);
dlgAlert.setCancelable(false);
dlgAlert.setPositiveButton("Accept", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mDisclaimerAccepted = true;
}
});
dlgAlert.setNegativeButton("Decline", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
hideKeyboard();
userNameEditText.clearFocus();
passwordEditText.clearFocus();
}
});
dlgAlert.show();
}
userNameEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
onFocusChange(View v, boolean hasFocus) {
if (!mDisclaimerAccepted && hasFocus) {
if (tempFileData != null) {
disclaimerDialog((EditText) view);
} else {
Toast.makeText(getActivity(), "You haven't accepted the disclaimer. Please check your internet connection", Toast.LENGTH_LONG).show();
}
}
}
});
passwordEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
onFocusChange(View v, boolean hasFocus) {
if (!mDisclaimerAccepted && hasFocus) {
if (tempFileData != null) {
disclaimerDialog((EditText) view);
} else {
Toast.makeText(getActivity(), "You haven't accepted the disclaimer. Please check your internet connection", Toast.LENGTH_LONG).show();
}
}
}
});
когда я вызываю passwordEditText.ClearFocus(), он возвращает true в onFocusChange для userNameEditText. но не наоборот.
Я перепробовал каждый блог и все вопросы по stackru. Это проблема только в пряниках.
1 ответ
Я исправил эту проблему. Я также добавил слушателя onFocusChange. Таким образом, в основном сенсорный приемник работает до тех пор, пока не будет принято диалоговое окно предупреждения (если вы отклоните диалоговое окно предупреждения, сенсорный приемник все равно будет включен). При принятии я отключаю сенсорный слушатель, возвращая false, и слушатель изменения фокуса включается.