Se 'BadTokenException: Impossible d'ajouter de la fenêtre" lorsque vous essayez d'afficher Facebook de dialogue Android

Que je suis un Mauvais Jeton Exception lorsque essayant de montrer les publier sur le mur de dialogue de l'Facebook SDK(Ça arrive tous les 2 fois j'ai l'exécution de l'application).

J'ai un bouton 'publier', et son travail est de montrer la boîte de dialogue si l'utilisateur est connecté à son compte FB, ou afficher la boîte de dialogue de connexion(et puis montrer immédiatement le post sur le mur de dialogue") si l'utilisateur n'est pas connecté à son compte.

Voici le clic de l'écouteur du bouton Publier -

    mPostButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if(mLoginButton.getVisibility() == 0)
                postOnWall();
            else
                mLoginButton.performClick();
        }
    });  

Voici la onAuthSucceed() auditeur -

public void onAuthSucceed() {
    postOnWall();
}

Voici la PostOnWall fonction(qui affiche la boîte de dialogue de publication) -

 public void postOnWall()
 {
    Bundle params = new Bundle();
    params.putString("name", FBname);
    params.putString("link", FBlink);
    params.putString("description", FBdescription);
    params.putString("picture", FBpicture);
    con = this;
    mFacebook.dialog(con, "feed", params, new SampleDialogListener());
 }

Voici le log de l'erreur -

 05-05 16:25:09.601: WARN/WindowManager(109): Attempted to add application window with unknown token HistoryRecord{405416b0 android.alco/.do_drive}.  Aborting.
05-05 16:25:27.292: ERROR/AndroidRuntime(20089): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.[email protected] is not valid; is your activity running?
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.view.ViewRoot.setView(ViewRoot.java:527)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.app.Dialog.show(Dialog.java:241)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at com.facebook.android.Facebook.dialog(Facebook.java:622)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.alco.do_drive.postOnWall(do_drive.java:258)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.alco.do_drive$SampleAuthListener.onAuthSucceed(do_drive.java:172)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.alco.SessionEvents.onLoginSuccess(SessionEvents.java:78)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at android.alco.LoginButton$LoginDialogListener.onComplete(LoginButton.java:100)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at com.facebook.android.Facebook$1.onComplete(Facebook.java:308)
05-05 16:25:27.292: ERROR/AndroidRuntime(20089):     at com.facebook.android.FbDialog$FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:133)

J'ai cherché partout et je ne peux pas trouver une solution.

MODIFIER - Ce qui se passe lorsque l'utilisateur n'est pas connecté. Dans ce cas, il appuie sur le bouton 'publier', dans les journaux, et puis la postOnWall la fonction est appelée, ce qui génère l'erreur. Je travaille dessus depuis 2 jours maintenant, et je ne pouvais pas trouver quoi que ce soit.

Merci!

BadTokenException presque a toujours à voir avec la Context vous passer. Qu'est-ce que votre this pointeur?
C'est le contexte d'activité, et non de l'application. Si j'ai utilisé le contexte de l'application d'une autre erreur serait de se présenter. Ce n'est pas le cas.

OriginalL'auteur Tofira | 2011-05-05