2012-01-03 2 views
0

Я пытаюсь сделать очень простую вещь, показать предупреждение только 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(); 
+0

buttonClickListener имеет значение null, когда вы используете его в dlg.setPositiveButton ... поэтому, когда вы нажимаете на положительную кнопку, вы получаете NPE – Selvin

+2

Является 'at com.phonegap.DroidGap.onPause (DroidGap.java:736)' из вашего кода ? У вас нет ничего странного? – tidbeck

+0

Можете ли вы написать нам, что у вас есть на DroidGap.java в строке 736? Также мне интересно, что есть на WLDroidGap.java на линии 163. там должны быть некоторые проблемы. –

ответ

6

попробуйте System.exit (0) вместо финиша()

+2

Это не самый подходящий способ закрыть приложение для Android, но для моего особого случая это сработало ... спасибо –

-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() { 


} 
0

Issue вы не можете закончить деятельность из режима паузы.

Идея заключается в том, чтобы обрабатывать ее с флагом. Введите код выхода в метод 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(); 

Надеется, что это помогает.

+0

Откуда мне следует называть Resume()? –

+0

Если ваше приложение находится в режиме паузы, оно автоматически вызовет возобновление (метод жизненного цикла) – sohilv

Смежные вопросы