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, и слушатель изменения фокуса включается.