2015-09-17 4 views
-3

У меня есть приложение Android. весь код в порядке, без ошибок, но я не знаю, что мое приложение иногда имеет силу. Можете ли вы помочь мне исправить это?App android force close

вот мой LogCat:

09-17 02:35:36.352: E/AndroidRuntime(2031): FATAL EXCEPTION: main 
09-17 02:35:36.352: E/AndroidRuntime(2031): Process: com.sendquiz.guessanimalsquiz, PID: 2031 
09-17 02:35:36.352: E/AndroidRuntime(2031): android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.view.ViewRootImpl.setView(ViewRootImpl.java:532) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.app.Dialog.show(Dialog.java:286) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.sendquiz.javafile.TimeCompleteDialog.showDialog(TimeCompleteDialog.java:47) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.sendquiz.guessanimalsquiz.QuizActivity.onTimeFinish(QuizActivity.java:240) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.sendquiz.guessanimalsquiz.QuizActivity$1.run(QuizActivity.java:49) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.os.Handler.handleCallback(Handler.java:733) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.os.Handler.dispatchMessage(Handler.java:95) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.os.Looper.loop(Looper.java:136) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.app.ActivityThread.main(ActivityThread.java:5001) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at java.lang.reflect.Method.invoke(Method.java:515) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at dalvik.system.NativeStart.main(Native Method) 

Вот мой код:

public void gameCompleted(){ 
     GameCompleteDialog dialog=new GameCompleteDialog(QuizActivity.this,SCORE_COUNTER); 
     dialog.buildDialog(); 
     dialog.showDialog();    
     handler.removeCallbacks(timerThread); 

    } 
    public void onTimeFinish() { 
     stopTimer(); 
     TimeCompleteDialog dialog=new TimeCompleteDialog(this); 

     dialog.showDialog(); 

     AnswerHandler.vibrate(this); 

    } 
} 
+0

Диалог, как представляется, проблема –

+0

возможно дубликат [Error: BinderProxy @ 45d459c0 не действует; работает ваша работа?] (http://stackoverflow.com/questions/7811993/error-binderproxy45d459c0-is-not-valid-is-your-activity-running) – user2413972

ответ

1

кажется, что решение в этом answer.

if(!((Activity) context).isFinishing()) 
{ 
    //show dialog 
} 

Все остальные ответы вне там, кажется, делают странные вещи, как переборе списка запущенных деятельности, но это гораздо проще, и, кажется, сделать трюк.

+0

как добавить этот код в мой скрипт? жаль, что я новичок в java –

+0

Я еще не видел ваш код. – user2413972

+0

У меня есть обновленный вопрос sir –

0

, пожалуйста, попробуйте под кодом. внесите изменения в соответствии с вашими потребностями

Я столкнулся с такой же проблемой. Вызов '(! IsFinishing()) предотвратил крах, но не смог отобразить сообщение «alert».

Затем я попытался сделать функцию вызова «статическим», где отображается предупреждение. После этого не произошло сбоя, и сообщение также отображается.

Пример

public static void connect_failure() {  
     Log.i(FW_UPD_APP, "Connect failed"); 

     new AlertDialog.Builder(MyActivity) 
     .setTitle("Title") 
     .setMessage("Message") 
     .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
        //do nothing 
      } 
     }) 
     .setIcon(R.drawable.the_image).show();  
    }