2016-08-23 1 views
0

Есть ли способ отменить поведение диалогового окна предупреждения при нажатии нейтральной кнопки или отрицательной кнопки, чтобы не отключать авто.Запрет AlertDialog от автоматического закрытия на NeutralButton Click ???

final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setCancelable(false); 
    builder.setTitle("Title"); 
    builder.setPositiveButton("Done", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // do something and close dialog 
     } 
    }); 
    builder.setNeutralButton("Clear All", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // do something but not close dialog   
     } 
    }); 
    builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int which, boolean isChecked) { 
      if(isChecked){ 
      // do something 
      } else { 
      // do something else 
      } 
     } 
    }); 
    final AlertDialog dialog = builder.create(); 
    dialog.show(); 

Ожидаемое поведение отрицательной кнопки здесь: на щелканье «Clear All» он должен просто очистить выбор, что это все и не автоматически закрыть диалоговое окно.? Но Android alertDialog автоматически закрывает диалоговое окно, нажав NegativeButton или NeutralButton. Любой способ изменить это поведение

+0

попробуйте этот http://stackoverflow.com/questions/32323605/how-do-i-control-on-multichoice-alertdialog –

ответ

0

Таким образом, я смог достичь этого с добавлением dialog.setOnShowListener() после dialog.create() и перед dialog.show()

builder.setNeutralButton("Clear All", null); 
    builder.setOnShowListener(new DialogInterface.OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 

      Button clearAll = builder.getButton(AlertDialog.BUTTON_NEUTRAL); 
      clearAll.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        // do something but don't dismiss 
         for(int which=0; which<checkedItems.length; which++){ 
         ((AlertDialog) dialog).getListView().setItemChecked(which, false); 
        } 
       } 
      }); 
     } 
    }); 

петли решает одну проблему , Проблема: при нажатии очистить все, флажок в пользовательском интерфейсе диалогового окна предупреждения не изменяется. Поэтому запустите конечный цикл для изменения пользовательского интерфейса, чтобы все флажки были сняты.

+0

попробуйте http://stackoverflow.com/questions/32323605/how-do-i -control-on-multichoice-alertdialog –

+0

Я сделал цикл, и я смог изменить состояние всех отмеченных элементов. – zero

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

  • Нет связанных вопросов^_^