J'obtiens l'exception Android suivante lorsque j'essaye d'ouvrir une boîte de dialogue. Quelqu'un peut-il m'aider à 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)
Réponses:
J'imagine - essayez-vous de créer Dialog avec un contexte d'application? Quelque chose comme ça:
C'est faux. Vous devez utiliser un contexte d'activité.
Vous devez essayer comme:
la source
getActivity()
@SagarDevangaVous pouvez continuer à utiliser
getApplicationContext()
, mais avant utilisation, vous devez ajouter cet indicateur:,dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
et l'erreur ne s'affichera pas.Et n'oubliez pas d'ajouter la permission:
la source
Dans mon cas, j'essayais de créer mon dialogue comme ceci:
J'ai donc dû changer pour:
Et ça marche bien pour moi;)
la source
MyActivity.class
au lieu dethis
carthis
fait référence à un objet différent.this
nous assurerons que votreDialog
inherits votre thème.Essayez
getParent()
à l'argumentcontext
commenew AlertDialog.Builder(getParent());
j'espère que cela fonctionnera, cela a fonctionné pour moi.la source
this.parent.getActivity().getApplicationContext()
mais j'aithis.parent.getActivity()
fait l'affaire.Je suppose - essayez-vous de créer Dialog en utilisant.
si vous affichez une classe de non-activité de dialogue, vous devez passer l'activité en paramètre.
Maintenant, cela fonctionnera très bien.
Si vous rencontrez des problèmes, faites-le moi savoir.
la source
J'ai essayé avec ceci dans le champ contextuel:
et cela fonctionne bien pour moi. Cela provenait d'une classe qui s'étend de "Fragment":
la source
Bonjour, si vous utilisez un adaptateur, il y a peut-être une chance.
Tout ce que vous devez savoir lorsque vous avez utilisé une boîte de dialogue dans l'adaptateur, getContext (), le contexte ou l'activité ne fonctionnera pas parfois.
Voici l'astuce que j'ai utilisée
v.getRootView().getContext()
où v est l'objet de vue auquel vous faites référence.Par exemple.
la source
J'ai eu la même exception. ce que je fais pour résoudre ce problème est de passer une instance du dialogue en tant que paramètre dans la fonction et de l'utiliser au lieu de ne transmettre que le contexte, puis d'utiliser getContext (). cette solution résout mon problème, j'espère qu'elle pourra vous aider
la source
J'ai eu cette exception, lorsque j'ai essayé d'ouvrir la boîte de dialogue de progression sous Cordova Plugin en utilisant ci-dessous deux cas,
nouveau ProgressDialog (this.cordova.getActivity (). getParent ());
nouveau ProgressDialog (this.cordova.getActivity (). getApplicationContext ());
Plus tard changé comme ça,
nouveau ProgressDialog (this.cordova.getActivity ());
Cela fonctionne bien pour moi.
la source
Utilisez ceci et le contexte n'a pas fonctionné pour moi ... mais MyActivityName.this a fonctionné. J'espère que cela aidera tous ceux qui en ont besoin.
la source
J'ai résolu cette erreur en ajoutant ci-dessous l'autorisation utilisateur dans AndroidManifest.xml
Aussi, boîte de dialogue Initialiser l'alerte avec le nom de l'activité:
Pour plus de détails, visitez ==> Comment créer une boîte de dialogue d'alerte dans Android
la source