我做了以下事情:
@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的片段
答案 0 :(得分:0)
Session session = Session.getActiveSession();
if (session != null && (session.isOpened() || session.isClosed())) {
onSessionStateChange(session, session.getState(), null);
}
请勿在{{1}},
中使用上述代码活动通常称为第一个onresume()
。因此它被调用两次。
请检查。