проблема с диалоговым окном при выходе в 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();

}

person Community    schedule 28.02.2014    source источник
comment
комментарий super.onBackPressed(); и проверьте еще раз.   -  person Amol Sawant 96 Kuli    schedule 28.02.2014


Ответы (2)


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

 super.onBackPressed();

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

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

alertDialog.setCanceledOnTouchOutside(false);
person kalyan pvs    schedule 28.02.2014
comment
у меня есть еще одна проблема по этому поводу, когда я нажимаю за пределами диалогового окна, диалоговое окно закрывается... - person ; 28.02.2014

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

Dialog dia = new AlertDialog.Builder(this)

и используйте dia для использования метода SetCanceledOnTouchOutside

person Oubaida AlQuraan    schedule 04.04.2015