0

Эта проблема возникает только в версиях ниже ICS. У меня есть два EditTexts (имя пользователя и пароль). Первоначально оба фокуса являются ложными. При щелчке либо я сначала вызываю AlertDialog. Onclick отрицательной кнопки I clearfocus обоих EditTexts. Когда я очищаю фокус второго (пароля) textField, первый автоматически сбрасывается в true.ClearFocus возвращает true и триггеры onFocusChange

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() он возвращает истину на onFocusChange для userNameEditText. но не наоборот.

Я пробовал каждый блог и все вопросы о stackoverflow. Это проблема только в Gingerbread.

ответ

0

Я исправил эту проблему. Я также добавил слушателя onFocusChange. Таким образом, в основном сенсорный прослушиватель работает до тех пор, пока не будет принят предупреждающий диалог (если вы отклоняете диалоговое окно предупреждения, сенсорный прослушиватель по-прежнему будет включен.). При приеме я отключу прослушиватель прикосновений, вернувшись к false и включится прослушиватель смены фокуса.

Смежные вопросы