Android Facebook SDK onUserInfoFetched方法不起作用

Android Facebook SDK onUserInfoFetched方法不起作用,android,facebook,sdk,Android,Facebook,Sdk,我对android版Facebook SDK有一个问题。此代码适用于同一应用程序的另一个活动。我在同一个xml文件中向用户显示相同的FacebookLogin按钮。但在另一个活动中,当我登录facebook时,onUserInfoFetched方法不起作用!因此,我无法获取用户 这些代码在同一应用程序中。但是在不同的活动中。我可以登录他们两个。但我无法获得用户 代码如下: 这是成功工作的代码: public class FacebookPreference extends Preference

我对android版Facebook SDK有一个问题。此代码适用于同一应用程序的另一个活动。我在同一个xml文件中向用户显示相同的FacebookLogin按钮。但在另一个活动中,当我登录facebook时,onUserInfoFetched方法不起作用!因此,我无法获取用户

这些代码在同一应用程序中。但是在不同的活动中。我可以登录他们两个。但我无法获得用户

代码如下: 这是成功工作的代码:

public class FacebookPreference extends Preference {
    private LoginButton loginButton;
    private ProfilePictureView profilePictureView;
    public static GraphUser user;
    private Context mContext;

    private enum PendingAction {
        NONE, POST_PHOTO, POST_STATUS_UPDATE
    }

    public FacebookPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.setWidgetLayoutResource(R.layout.preferences_item_list_facebook);
        this.mContext = context;
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        loginButton = (LoginButton) view.findViewById(R.id.login_button);
        profilePictureView = (ProfilePictureView) view.findViewById(R.id.profilePicture);
        loginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {
            @Override
            public void onUserInfoFetched(GraphUser user) {
                FacebookPreference.user = user;
                updateUI();

            }
        });

    }

    private void updateUI() {
        Session session = Session.getActiveSession();
        if (user != null) {
            profilePictureView.setProfileId(user.getId());
        } else {
            profilePictureView.setProfileId(null);
        }
    }
}
这是不起作用的代码

public class FacebookLoginActivity extends Activity{

    LoginButton button;
    private ProfilePictureView profilePictureView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.preferences_item_list_facebook);


        button = (LoginButton) findViewById(R.id.login_button);
        profilePictureView = (ProfilePictureView) findViewById(R.id.profilePicture);

        button.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {
            @Override
            public void onUserInfoFetched(GraphUser user) {
                FacebookPreference.user = user;
                if(FacebookPreference.user != null)
                    Toast.makeText(FacebookLoginActivity.this,  FacebookPreference.user.getName().toString(), Toast.LENGTH_LONG).show();
                updateUI();

            }
        });

    };


    private void updateUI() {
        Session session = Session.getActiveSession();
        if (FacebookPreference.user != null) {
            profilePictureView.setProfileId(FacebookPreference.user.getId());
        } else {
            profilePictureView.setProfileId(null);
        }
    }
}
xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:facebook="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/menu_item_back"
    android:orientation="horizontal" >

    <com.facebook.widget.ProfilePictureView
        android:id="@+id/profilePicture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        facebook:preset_size="normal" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginRight="5dp"
        android:orientation="vertical" >

        <com.facebook.widget.LoginButton
            android:id="@+id/login_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            facebook:confirm_logout="false"
            facebook:fetch_user_info="true" >
        </com.facebook.widget.LoginButton>
    </LinearLayout>

</LinearLayout>

谢谢你的回答

看看这个,这个对我来说很有用,看看这个答案


如果查看此代码工作的其他活动,您会注意到每个活动生命周期方法上都会显示一个UiLifecycleHelper成员,如中所示:

@Override
protected void onResume() {
    super.onResume();
    uiHelper.onResume();
}

@Override
protected void onPause() {
    super.onPause();
    uiHelper.onPause();
}
等等


同样要实现这一点,回调应该可以工作。

登录后,onUserInfoFetched对于第二个codeFacebookLoginActivity不起作用。所以,我无法获得用户。当用户为空时,如何获取用户详细信息?我的问题不是关于用户详细信息。问题是我无法获取用户对象,因为onUserInfoFetched方法不起作用。请像这样更改条件并检查!FacebookPreference.user.equals FacebookPreference.user=用户;iFaceBookPreference.user!=空Toast.makeTextFacebookLoginActivity.this,FacebookPreference.user.getName.toString,Toast.LENGTH\u LONG.show;更新;这段代码完全不起作用。我的朋友,这种方法行不通。我的问题是,没有错误,当我在调试模式下运行应用程序时,我看到onUserInfoFetched方法在登录正常后不工作。
@Override
protected void onResume() {
    super.onResume();
    uiHelper.onResume();
}

@Override
protected void onPause() {
    super.onPause();
    uiHelper.onPause();
}