Facebook onCompleted被调用两次

时间:2015-01-02 12:41:36

标签: android facebook

我做了以下事情:

@Override
public void onResume() {
    super.onResume();
    // For scenarios where the main activity is launched and user
    // session is not null, the session state change notification
    // may not be triggered. Trigger it if it's open/closed.
    Session session = Session.getActiveSession();
    if (session != null && (session.isOpened() || session.isClosed())) {
        onSessionStateChange(session, session.getState(), null);
    }        
    uiHelper.onResume();
}

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (state.isOpened()) {
        makeMeRequest(session);
    } else if (state.isClosed()) {

    }
}

private void makeMeRequest(final Session session) {
    Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
        @Override
        public void onCompleted(GraphUser user, Response response) {
            if (session == Session.getActiveSession()) {
                if (user != null) {
                    log.d("creating fragment");  //<<<<<<<<<<<<<<<
                    //creating a fragment when the request is complete
                    .....
                }                    
            }
            if (response.getError() != null) {

            }
        }
    });
    request.executeAsync();
} 

请阅读第一个代码条款的注释:正如Facebook建议的那样,该代码有效,因为没有它,即使我已登录,也不会在某些情况下创建片段,但是使用此代码,onCompleted会被调用两次我得到一个例外。请参阅我在第三个代码子句中的日志记录:log.d(“创建片段”) - 在异常发生之前我看到它两次。

知道我错过了什么吗? p.s。:我有一个主要活动,可以调用用户可以登录facebook的片段

1 个答案:

答案 0 :(得分:0)

Session session = Session.getActiveSession();
if (session != null && (session.isOpened() || session.isClosed())) {
    onSessionStateChange(session, session.getState(), null);
}

请勿在{{1​​}},

中使用上述代码

活动通常称为第一个onresume()。因此它被调用两次。

请检查。