Показать диалог подтверждения во фрагменте - PullRequest
6 голосов
/ 19 марта 2012

Я конвертирую свое Android-приложение для использования фрагментов. Раньше у меня была активность, которая теперь является фрагментом. Следовательно, этот код больше не может быть использован:

showDialog(CONFIRM_ID);
// ...
@Override
public Dialog onCreateDialog(int id) {
    // Create the confirmation dialog...
}

Изнутри объекта Fragment мне нужно показать диалоговое окно подтверждения, которое после подтверждения возвращает меня к объекту для обновления статуса.

1007 * Е.Г. *

  1. Внутренний фрагмент X.
  2. Показать диалог подтверждения.
  3. Если "да", обновите пользовательский интерфейс для X.

Как я могу это сделать? Пожалуйста, предоставьте рабочий образец кода.

Ответы [ 2 ]

9 голосов
/ 19 марта 2012

Вы можете просто создать свои диалоги (AlertDialog), используя код, как показано здесь: http://developer.android.com/guide/topics/ui/dialogs.html#AlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
       .setCancelable(false)
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
                MyActivity.this.finish();
           }
       })
       .setNegativeButton("No", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
           }
       });
AlertDialog alert = builder.create();
alert.show();

Если вам нужно создать диалоги с кнопками, которые не сразу закрывают само диалоговое окно, вы можете увидеть мой ответ здесь: Как предотвратить закрытие диалога при нажатии кнопки

0 голосов
/ 23 октября 2017
         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());       
         builder.setTitle("Your Title");
         builder.setMessage("Your Dialog Message");
         builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {
                  //TODO
                  dialog.dismiss();
             }
         });
         builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int id) {
                  //TODO
                  dialog.dismiss();
             }
         });
         AlertDialog dialog = builder.create();
         dialog.show();
...