Проблема с диалоговым окном при выходе в Android

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

мой код

public class MainActivity extends Activity {

private AlertDialog alertDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

}

@Override
public void onBackPressed() {
    super.onBackPressed();
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            MainActivity.this);

    alertDialogBuilder.setTitle("Alert Dialogue Box");

    alertDialogBuilder.setMessage("Are you sure?");

    alertDialogBuilder.setPositiveButton("Yes",
            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int id) {

                    Toast.makeText(getApplicationContext(),
                            "Positive", 1000).show();

                }

            });

    alertDialogBuilder.setNegativeButton("No",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                    dialog.cancel();

                    Toast.makeText(getApplicationContext(),
                            "You chose a negative answer",

                            Toast.LENGTH_LONG).show();

                }

            });

    alertDialogBuilder.setNeutralButton("Exit the app",
            new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int id) {

                    Toast.makeText(getApplicationContext(), "exit",
                            1000).show();
                    MainActivity.this.finish();

                }

            });

    AlertDialog alertDialog = alertDialogBuilder.create();

    alertDialog.show();

}

2 ответа

Решение

Код, который вы написали, в порядке. Но эти строки приводят к Exception..

 super.onBackPressed();

который закончит Activity Так что ваши Dialog уволен с Исключением утечки Окна. Поэтому удалите эту строку из своего кода.

Добавьте эту строку, чтобы отменить касание снаружи.

alertDialog.setCanceledOnTouchOutside(false);

Вы можете установить AlertDialog.Builder в диалоге, например:

Dialog dia = new AlertDialog.Builder(this)

и использовать dia использовать SetCanceledOnTouchOutside метод

Другие вопросы по тегам