2016-02-11 2 views
0

В моем приложении я показываю пользовательский AlertDialog, чтобы пользователь мог ввести строку. Когда пользователь нажимает положительную кнопку, для проверки строки, предоставленной пользователем, должен быть AsyncTask. Если проверка прошла успешно, я хочу, чтобы dismiss()AlerDialog, с другой стороны, если сбой проверки, я хочу, чтобы AlerDialog оставался видимым для пользователя, чтобы внести необходимые исправления.Избегайте отклонения на support.v7.app.AlertDialog при нажатии кнопки

Проблема заключается в том, что я понятия не имею, как избежать AlerDialog распускать после щелчка на любую из кнопок (я проверил со всеми из них).

Ни один из ответов, который я нашел здесь, как this question, кажется, работает.

Вот мой кусок кода

LayoutInflater inflater = getActivity().getLayoutInflater(); 
View dialogView = inflater.inflate(R.layout.generic_textinput_dialog, null); 

final EditText editText = (EditText) dialogView.findViewById(R.id.generic_dialog_text_editText); 
editText.setHint("Username"); 

AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity()); 
dialogBuilder.setMessage("Share xxx"); 
dialogBuilder.setPositiveButton("Share", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick (DialogInterface dialog, int which) { 

     String sharingUser = editText.getText().toString(); 
     if (!TextUtils.isEmpty(sharingUser)) { 
      doSomething(); 
     } 

     actionMode.finish(); 
    } 
}); 
dialogBuilder.setNegativeButton("Cancel", null); 
dialogBuilder.setView(dialogView); 
dialogBuilder.show(); 

Любая идея, как решить эту проблему?

ПРИМЕЧАНИЯ

  • Очевидно, я не используя dialog.dismiss() в любом месте даже при том, что диалог будет уволен после нажатия любой из кнопок.
  • Я использую API v23.1.1.
+3

Если вы не хотите поведения AlertDialog, не используйте 'AlertDialog'. Создайте свой собственный диалог (или диалоговое действие). – CommonsWare

+0

Думаю, это был бы лучший вариант. Я потратил слишком много времени на поиск решения вокруг «AlertDialog». – kazbeel

ответ

0

Вы всегда можете переопределить кнопку на прослушивателе кликов, чтобы избежать функциональности по умолчанию.

AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity()); 
dialogBuilder.setMessage("Share xxx"); 
dialogBuilder.setPositiveButton("Share", null); 
dialogBuilder.setNegativeButton("Cancel", null); 
dialogBuilder.setView(dialogView); 
dialogBuilder.show(); 
    Button positive = dialog.getButton(DialogInterface.BUTTON_POSITIVE); 
      positive.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
         String sharingUser = editText.getText().toString(); 
         if (!TextUtils.isEmpty(sharingUser)) { 
          doSomething(); 
         } 

         actionMode.finish(); 
       } 
    }); 
+0

Это решение совпадает с ответом, который я упомянул в моем вопросе, и, похоже, он не работает в моем случае: даже при установке положительных и отрицательных кнопок прослушивание на «null» AlertDialog отклоняется после щелчка. – kazbeel

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