169 votes

Erreur : BinderProxy@45d459c0 n'est pas valide ; votre activité fonctionne-t-elle ?

Quelle est cette erreur... je n'ai trouvé aucune discussion sur cette erreur dans la communauté stackoverflow Détaillé :-

 10-18 23:53:11.613: ERROR/AndroidRuntime(3197): Uncaught handler: thread main exiting due to uncaught exception
10-18 23:53:11.658: ERROR/AndroidRuntime(3197): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@45d459c0 is not valid; is your activity running?
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.view.ViewRoot.setView(ViewRoot.java:468)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.app.Dialog.show(Dialog.java:239)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at com.vishal.contacte.Locationlistener$MyLocationListener.onLocationChanged(Locationlistener.java:86)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:179)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:112)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:128)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.os.Looper.loop(Looper.java:123)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at android.app.ActivityThread.main(ActivityThread.java:4363)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at java.lang.reflect.Method.invokeNative(Native Method)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at java.lang.reflect.Method.invoke(Method.java:521)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
10-18 23:53:11.658: ERROR/AndroidRuntime(3197):     at dalvik.system.NativeStart.main(Native Method)

13voto

Hamza Polat Points 325

J'ai rencontré le même problème et j'ai utilisé le code proposé par DiscDev ci-dessus avec les modifications mineures suivantes :

 if (!MainActivity.this.isFinishing()){
    alertDialog.show();
}

5voto

Rahul Rao Points 51

si la boîte de dialogue pose ce problème à cause du fil, vous devez l'exécuter sur le fil de l'interface utilisateur comme ça :-

 runOnUiThread(new Runnable() {
            @Override
            public void run() {
                dialog.show();

            }
        });

4voto

akhilesh0707 Points 3218

Cette erreur se produit lorsque vous affichez la boîte de dialogue d'un contexte qui n'existe plus.

Avant d'appeler .show() vérifiez que l'activité/le contexte ne se termine pas

 if (!(context instanceof Activity && ((Activity) context).isFinishing())) {
    alert.show();
}

1voto

erdomester Points 3191

J'ai rencontré cette erreur lorsque j'avais un countDownTimer dans mon application. Il y avait une méthode appelant GameOver dans mon application comme

 public void onFinish() {
     GameOver();
}

mais en fait, le jeu pouvait être terminé avant la fin du temps imparti à cause d'un mauvais clic de l'utilisateur (c'était un jeu de clic). Ainsi, lorsque je regardais la boîte de dialogue Game Over après par exemple 20 secondes, j'ai oublié d'annuler le countDownTimer donc une fois le temps écoulé, la boîte de dialogue est réapparue. Ou s'est écrasé avec l'erreur ci-dessus pour une raison quelconque.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X