如何从AlertDialog
我试图做一个很简单的事情,显示警报,只有1个按钮,点击,如果我想对话框关闭,比应用程序退出\结束()如何从AlertDialog
退出程序目前我正在使用该设备的通用警报:
应用程序意外停止。请重试
在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();
尝试System.exit(0)而不是finish()
这不是关闭Android应用程序的正确方式,但对于我的特定情况下它的工作...谢谢 – 2012-01-03 14:55:11
尝试,如果工作
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() {
}
的问题是你不能从暂停模式完成的活动。
想法是处理它与国旗。 使用标志检查将退出代码写入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();
希望它能帮助。
从哪里可以打电话给Resume()? – 2012-01-03 14:26:21
如果您的应用程序处于暂停模式,它会自动调用恢复(生命周期方法) – sohilv 2012-01-04 05:22:49
buttonClickListener在dlg.setPositiveButton中使用它为空,所以当你点击肯定按钮时,你开始NPE – Selvin 2012-01-03 13:33:48
在代码中com.phonegap.DroidGap.onPause(DroidGap.java:736)'' ?当然你没有什么奇怪的东西? – tidbeck 2012-01-03 13:34:56
你能写我们在736行DroidGap.java上有什么吗?另外我很好奇在WLDroidGap.java上的第163行。那里肯定有一些问题。 – 2012-01-03 13:52:48