以下是发生的事情:
如果我暂停然后恢复我的程序,会注意到用户ID,然后我的程序行为正常;但是,这不应该这样做。在继续操作之前,如何让我的程序等待Facebook Graph API的响应?
protected void findUserID(Session session)
{
//userId = null; // Set initial
// If session is open
if (session != null && session.isOpened()) {
// Make an API call to get user data
// and define a new callback to handle the response
Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
Session session = Session.getActiveSession();
// If current session matches active session
if (session == Session.getActiveSession()) {
if (user != null) {
userId = user.getId(); // set userId
Log.d("internal", "UserId issss: " + userId);
} // end if user != null
} // end if session == Session.getActiveSession()
} // end onCompleted
}); // end request
Request.executeBatchAsync(request); // Request does not execute unless you call this.
Log.d("findUserID", "The value after request: " + userId);
} // end session open check
}
感谢任何/所有帮助。
答案 0 :(得分:0)
在Request类而不是executeBatchAsync上使用一些..executeAndWait方法,而不是你的程序应该等待数据,之后它会继续......
看看这里:https://developers.facebook.com/docs/reference/android/3.0/Request
答案 1 :(得分:0)
onCompleted方法中的代码是“回调”。 Facebook请求完成后,它会异步调用。那时原来的函数findUserID已经返回了。使用回调需要一些时间来适应,并且它需要您相应地组织您的控制流。您应该创建一个“onUserIdFound”函数,并在找到userID时调用该函数,而不是从函数返回值。