私のログアウトコード:
if(fb.isSessionValid()){
masyncfb.logout(this, new RequestListener() {
@Override
public void onComplete(String response, Object state) {
Log.d(TAG, "Logging you out: "+response);
}
@Override
public void onIOException(IOException e, Object state) {}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {}
@Override
public void onFacebookError(FacebookError e, Object state) {}
});
updateButtonImage();
}else{
私のupdateButtonImage()
方法は次のとおりです。
private void updateButtonImage() {
// TODO Auto-generated method stub
if(fb.isSessionValid()){
Toast.makeText(MainActivity.this, "logged in", Toast.LENGTH_LONG).show();
button.setImageResource(R.drawable.logout);
}else{
button.setImageResource(R.drawable.login);
Toast.makeText(MainActivity.this, "logged out", Toast.LENGTH_LONG).show();
}
}
updateButtonImage()
このメソッドは、ログイン後にボタンの画像を「ログイン」から「ログアウト」に変更しますが、ログアウト後にボタンを「ログアウト」から「ログイン」に変更しません。(logcatから)ログアウトボタンをクリックした後、Facebookから正常にログアウトしたと確信しています。つまり、Facebookから正常にログアウトしたにもかかわらず、セッションはまだ有効です。なぜ?どうすれば問題を解決できますか?ボタンを「ログアウト」から「ログイン」に変更する必要があります。私は何をすべきか?
注意:FacebookSDKを使用しています
編集
AsyncFacebookRunner.javaのログアウトメソッドのスレッドがジョブを終了する前にボタンを変更しようとしていると思います。それが本当なら、スレッドがその作業を完了するのをどのように待ってから、updateButtonImage()
メソッドを実行する必要がありますか。