2013-05-13 4 views
5

Я использую диалоговое окно предупреждения со следующими свойствами. Проблема заключается в том, что диалог открывается, когда я нажимаю кнопку «Назад» или коснувшись внешнего диалога. Я не хочу этого. Как я могу это решить, потому что setCancelable не помогает.AlertDialog отклонен при нажатии назад

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setMessage(R.string.check_internet); 
    builder.setCancelable(false); 
+0

Вы расширяете DialogFragment? – Blackbelt

+0

да я расширение диалога фрагмент – Ravi

+0

Попробуйте - http://stackoverflow.com/questions/8906269/alertdialogs-setcancelablefalse-method-not-working – Anukool

ответ

18

Поскольку вы расширяете на DialogFragment вам нужно позвонить

setCancelable(false); 

внутри его onCreate

setCancelable(false);

0
new AlertDialog.Builder(getActivity()); 

Try положить активность там, которая находится в нижней части стека (не сверху)

2
AlertDialog.Builder builder = new AlertDialog.Builder(this); // this activity context 
builder.setMessage(R.string.check_internet); 
AlertDialog alertDialog =builder.create(); 
alertDialog.setCancelable(false); 
alertDialog.show(); 
0

Это поведение по умолчанию для всех Android устройства, подумайте дважды, прежде чем изменять это, потому что пользователь ожидает, когда он нажимает назад кнопка.

Однако вы можете изменить это поведение с помощью переопределяетOnBackPressed() метода Dialog/DialogFragment класса. Не называйте super.OnBackPressed() внутри перегруженной функции, однако, что может произойти утечка памяти поэтому будьте осторожны ..

+1

onBackPressed не доступен в классе, который простирается DialogFragment – Android

0
public void showAlert1(){ 
    MainActivity.this.runOnUiThread(new Runnable() { 
    public void run() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
        builder.setMessage(R.string.check_internet); 
        builder.setIcon(R.drawable.tick); 
        builder.setCancelable(false); 
        AlertDialog alert = builder.create(); 
        alert.show();    
       } 
      }); 
      } 
0

Нет, это поведение по умолчанию в диалоговом окне предупреждения отображается по этой ссылке dialog

+0

одно замечание о том, что комментарий. Вы можете реализовать onDismiss, но, похоже, API 17 как минимум. – Shygar

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