我正在尝试做一个非常简单的事情,只用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();
答案 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() {
}