135 votes

Android 'impossible à ajouter fenêtre - jeton null n'est pas pour une application' exception

J'obtiens l'exception Android suivante lorsque j'essaie d'ouvrir une boîte de dialogue. Quelqu'un peut-il m'aider s'il vous plaît à comprendre ce qui se passe et comment puis-je résoudre ce problème?

 android.view.WindowManager$BadTokenException: 
  Unable to add window -- token null is not for an application
    at android.view.ViewRoot.setView(ViewRoot.java:509)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
    at android.app.Dialog.show(Dialog.java:241)
 

422voto

Peter Knego Points 57985

Je suppose - essayez-vous de créer Dialog avec un contexte d'application? Quelque chose comme ça:

 new Dialog(getApplicationContext());
 

C'est faux. Vous devez utiliser un contexte d'activité.

Vous devez essayer comme:

 new Dialog(YourActivity.this); 

13voto

postNuKe Points 151

Dans mon cas, j’ai essayé de créer ma boîte de dialogue comme ceci :

Donc j’ai dû changer pour :

Et il fonctionne très bien pour moi  ;)

12voto

Priyank Joshi Points 91

Essayez getParent () à la place de l'argument du contexte, comme le nouvel AlertDialog.Builder (getParent ()); J'espère que cela fonctionnera, cela a fonctionné pour moi.

3voto

Harshid Points 2354

Je devine - vous essayez de créer à l’aide de la boîte de dialogue.

Si vous afficher de dialogue classe d’activité non alors vous devrez passer l’activité en tant que paramètre.

Maintenant, ce sera un travail excellent.

Si vous trouvez que des problèmes puis faites le moi savoir.

2voto

Matias Points 21

J’ai essayé avec ceci dans le champ Contexte :

et il fonctionne très bien pour moi. Il s’agissait d’une classe qui s’étend de « Fragment » :

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