Immer "BadTokenException: kann Nicht hinzufügen-Fenster', wenn Sie versuchen, um zu zeigen, Facebook-dialog - Android
Bin ich immer ein Schlechtes Token Ausnahme, wenn Sie versuchen, um zu zeigen, das veröffentlichen auf Wand-dialog aus dem Facebook-SDK(Es passiert jedes 2 mal ich die app starte).
Habe ich eine Schaltfläche "veröffentlichen", und Ihre Aufgabe ist es zu zeigen, der dialog, wenn der Benutzer angemeldet ist, auf seinem FB-Konto, oder den login-dialog(und dann sofort der "post-wall" - dialog), wenn der Benutzer nicht angemeldet in seinem Konto.
Hier ist die auf Klick-listener der Schaltfläche "Veröffentlichen" -
mPostButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(mLoginButton.getVisibility() == 0)
postOnWall();
else
mLoginButton.performClick();
}
});
Hier ist die onAuthSucceed () - listener -
public void onAuthSucceed() {
postOnWall();
}
Hier ist die PostOnWall Funktion(zeigt das Dialogfeld "veröffentlichen") -
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());
}
Hier ist der log von dem Fehler -
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.BinderProxy@405db9f8 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)
Ich habe überall gesucht und ich finde keine Lösung.
BEARBEITEN - Dies geschieht nur, wenn der Benutzer nicht eingeloggt ist. In diesem Fall drückt er die Schaltfläche "veröffentlichen", meldet sich an, und dann das "postOnWall" - Funktion aufgerufen, die generiert den Fehler. Ich arbeite für 2 Tage jetzt, und konnte nichts finden, es.
Dank!
BadTokenException
fast immer zu tun hat mit derContext
Sie übergeben. Was ist Ihrethis
Zeiger?- Es ist die Aktivität der Kontext, nicht der Anwendung. Wenn ich die Anwendung Kontext eine andere Fehlermeldung auftauchen würde. Dies ist nicht der Fall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Und natürlich gibt es den Fall, wo ein code wie
lief innerhalb einer ActivityGroup abgeleitete Klasse, wie im Falle der Umschaltung zwischen vielen Aktivitäten unter einer einzigen Registerkarte Registerkarten in der Aktivität. Werden Sie sicher, dass das 'das' in
wird ersetzt durch einen richtigen Verweis auf die WhateverActivity die Eltern wie
Wie es aussieht, haben einige Methode mit einem Kontext - /Aktivitäts-Objekt ist nicht mehr aktiv.
Wahrscheinlich in der postOnWall-Methode.
Ist die
this
in dieser Methode wird die aktuell angezeigte Tätigkeit?Vor dem gleichen Problem. Soweit ich das beurteilen kann, von googeln, Ihr zu tun, mit Ihrer Tätigkeit manchmal nicht bereit, wenn der Facebook-login-Aktivität gibt sein Ergebnis. Warum? Keine Ahnung.
Aber ich denke dies funktioniert besser: Definieren Sie ein flag in der Klasse, setzen Sie das Kennzeichen in der AuthListener, und zeigen Sie den Alarm in der onStart-wenn flag gesetzt ist. Dann werden Sie sicher in den Komfort des eigenen Aktivität:
...
...
Disclaimer: ich habe sehr wenig Java - /Android-Erfahrung.