android中退出对话框的问题

时间:2014-02-28 07:36:40

标签: android alertdialog android-dialog

我开发了一个有一个活动的应用程序,我将在退出时按下代码, 我想用三个按钮显示对话框当用户按下按钮一个用于“是”第二个用于“家”而第三个用于“退出”并且我做了它在背面按下方法但我得到一些问题它没有显示对话框如果显示它只是闪烁的对话框那么它背后的原因是什么

我的代码是

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 个答案:

答案 0 :(得分:1)

您编写的代码很好。但这一行会导致Exception ..

 super.onBackPressed();

这是完成你的Activity所以你的Dialog因窗口漏洞异常而被解雇。 因此,请从代码中删除该行。

添加此行以取消外部触摸。

alertDialog.setCanceledOnTouchOutside(false);

答案 1 :(得分:0)

您可以在Dialog引用中设置AlertDialog.Builder,如:

Dialog dia = new AlertDialog.Builder(this)

并使用dia来使用SetCanceledOnTouchOutside方法