2013-07-02 85 views
1

我想從facebook sdk獲取用戶的詳細信息。我正在使用這種方法現在我想返回用戶的ID,我不知道該怎麼做,請幫助。如何從具有回叫的方法返回值?

private String getUserId() 
{ 
    Request.executeMeRequestAsync(Session.getActiveSession(), 
            new Request.GraphUserCallback() 
       { 
        @Override 
        public void onCompleted(GraphUser user, Response response) 
        { 
         FacebookRequestError error = response.getError(); 
         GraphObject graphObject = response.getGraphObject(); 

         if(graphObject != null) 
         { 
          if(error == null) 
          { 
           Preferences.saveUserInfo(user.getId(), 
                 FetchGroups.this); 
           Preferences.saveUserName(user.getName(), 
                 FetchGroups.this); 

           return user.getId(); 
          } 
         } 
        } 
       }); 
} 

這給我錯誤onCompletd方法有返回類型void。在此先感謝

+0

只是一個建議,你能不能提取從的AsyncTask onPostExecute()的ID()? – g00dy

+0

這裏我沒有使用AsyncTask()。 –

+0

爲它創建監聽器,你知道該怎麼做嗎? – deadfish

回答

1

不,你不能像那樣返回。創建一個全局變量並賦值並稍後使用它。

public class SomeClass { 
String useid; 

-

 Request.executeMeRequestAsync(Session.getActiveSession(), new Request.GraphUserCallback() { 

       @Override 
       public void onCompleted(GraphUser user, Response response) { 
        FacebookRequestError error = response.getError(); 
        GraphObject graphObject = response.getGraphObject(); 
        if(graphObject != null) { 
         if(error == null) { 
          Preferences.saveUserInfo(user.getId(), FetchGroups.this); 
          Preferences.saveUserName(user.getName(), FetchGroups.this); 
          userid = user.getId(); 
         } 
        } 
       } 
      }); 
+0

我已經這樣做了,但我不想這樣做,我不得不返回。這樣做沒有其他選擇嗎? –

+1

如何從一個匿名的內部類方法返回一個變量?*恕我直言*否,並且那個方法的返回類型是Void,如果你看到。 –

+0

嗯。好,謝謝 –

0

而不是使全局id和整個活動訪問它。