2016-05-02 3 views
0

Как я могу получить какое-либо действие для обратной кнопки при отображении диалогового окна предупреждения? Я должен спросить пользователя: «Вы действительно хотите отказаться от изменений?»Слушатель для кнопки BACK

В это время на экране появляется диалоговое окно с предупреждением.

+0

http://stackoverflow.com/a/7080331/1179430 – GAntoine

ответ

1

Ваш первоначальный вопрос был не совсем ясен в отношении того, что вы хотели сделать. Поэтому, если вы хотите показать диалог, когда пользователь нажимает кнопку «Назад» после ввода типов в EditText, тогда вам необходимо указать @Override метод onBackPressed в вашем классе Activity.

@Override 
public void onBackPressed() { 
    // Here you want to show the user a dialog box 
    new AlertDialog.Builder(context) 
     .setTitle("Exiting the App") 
     .setMessage("Are you sure?") 
     .setPositiveButton("YES", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       // The user wants to leave - so dismiss the dialog and exit 
       finish(); 
       dialog.dismiss(); 
      } 
     }).setNegativeButton("NO", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       // The user is not sure, so you can exit or just stay 
       dialog.dismiss(); 
      } 
     }).show(); 

} 

Вы можете посмотреть на принятый ответ here.

Но если вы только хотели, чтобы справиться с задним нажатием кнопки на самом диалоге, то есть уже ответ на этот вопрос - в основном вы установите для OnKeyListener в диалоге, как это:

dialog.setOnKeyListener(new Dialog.OnKeyListener() { 

     @Override 
     public boolean onKey(DialogInterface arg0, int keyCode,KeyEvent event) 
     { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
       /* The user pressed back button - do whatever here. 
       Normally you dismiss the dialog like dialog.dismiss(); */ 

      } 
      return true; 
      } 
     }); 

Посмотрите на принятый ответ here.

+0

Так что я должен сделать Somthing как это? if (keyCode == KeyEvent.KEYCODE_BACK) { AlertDialog.Builder di = new AlertDialog.Builder(); .... } –

+0

Сначала необходимо объявить 'диалог', а затем добавить в него' OnKeyListener'. Вы знаете, как это сделать? – ishmaelMakitla

+0

Ну ... я не бледный ... Но теперь у меня есть диалог, из которого я должен слушать заднюю кнопку. Не забудьте, где ваш код должен работать правильно. –

0
builder.setNegativeButton(R.string.btn_rev, new DialogInterface.OnClickListener(){ 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        //если что-то ввели и нажали Назад 
        if (edText.getText() != null) { 
         // onBackPressed(); //here's code for back-button 
        } 

       } 
      }); 
+0

это не ответ. Это мой код для вставки нового кода в это. –

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