如何从AlertDialog退出应用程序

时间:2012-01-03 13:30:50

标签: android alertdialog

我正在尝试做一个非常简单的事情,只用1个按钮显示警告,如果点击我希望对话框关闭,而不是应用程序退出\ finish()

目前我正在设备上获得通用警报:

应用程序意外停止。请重试

在LogCat中,我得到: 无法暂停活动

这是日志:

01-03 14:49:00.670: ERROR/AndroidRuntime(22536): Uncaught handler: thread main exiting due to uncaught exception
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): java.lang.RuntimeException: Unable to pause activity {com.SprintTwo/com.SprintTwo.SprintTwo}: java.lang.NullPointerException
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3162)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3119)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3102)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.ActivityThread.access$2400(ActivityThread.java:119)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1874)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.os.Looper.loop(Looper.java:123)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.ActivityThread.main(ActivityThread.java:4363)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at java.lang.reflect.Method.invokeNative(Native Method)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at java.lang.reflect.Method.invoke(Method.java:521)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at dalvik.system.NativeStart.main(Native Method)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536): Caused by: java.lang.NullPointerException
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at com.phonegap.DroidGap.onPause(DroidGap.java:736)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at com.worklight.androidgap.WLDroidGap.onPause(WLDroidGap.java:163)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.Activity.performPause(Activity.java:3782)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1190)
01-03 14:49:00.680: ERROR/AndroidRuntime(22536):     at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3149)

这是我的代码:

buttonClickListener = new AlertDialog.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            finish();
                        }

AlertDialog.Builder dlg = new AlertDialog.Builder(context);
    dlg.setTitle(title);
    dlg.setMessage(message);
    dlg.setCancelable(false);
    dlg.setPositiveButton(buttonText, buttonClickListener);
    dlg.create();
    dlg.show();

3 个答案:

答案 0 :(得分:6)

尝试System.exit(0)而不是finish()

答案 1 :(得分:0)

问题是您无法从暂停模式完成活动。

想法是用旗帜处理它。 使用标志检查在Resume()方法中写出退出代码。在对话框中启用标志。

类似的东西(下面代码是假的),

boolean APP_EXIT_FLAG = false;
Resume(){

if(APP_EXIT_FLAG)
finish();

}

您的提醒对话框代码,

buttonClickListener = new AlertDialog.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                           APP_EXIT_FLAG = true;
                            dialog.dismiss();
                        }

AlertDialog.Builder dlg = new AlertDialog.Builder(context);
    dlg.setTitle(title);
    dlg.setMessage(message);
    dlg.setCancelable(false);
    dlg.setPositiveButton(buttonText, buttonClickListener);
    dlg.create();
    dlg.show();

希望它有所帮助。

答案 2 :(得分:-1)

尝试工作

private void ConfirmAlert() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("CLOSE");
    builder.setMessage("Do You Want to Close the Application").setCancelable(false)
    .setPositiveButton("Yes",
            new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.dismiss();
            onYesClick();

        }


    }).setNegativeButton("No",
            new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
            onNoClick();
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}
private void onYesClick() {
    Intent setIntent = new Intent(Intent.ACTION_MAIN);
    setIntent.addCategory(Intent.CATEGORY_HOME);
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(setIntent);

    ActivityName.this.finish();



}private void onNoClick() {


}