2

我的注销代码:

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 注销。为什么?我该如何解决这个问题?我只需要将按钮从“注销”更改为“登录”。我应该怎么办?

注意:我正在使用 facebook SDK

已编辑

我想我正在尝试在 AsyncFacebookRunner.java 中的注销方法中的线程完成其工作之前更改我的按钮。如果是真的那么我应该如何等待线程完成它的工作然后执行我的updateButtonImage()方法。

4

1 回答 1

0

为了摆脱它,我使用sessionlogin. 有了它,它工作正常。

于 2012-11-30T18:59:35.310 回答