2014-12-20 107 views
0

設置我的主要活動onCreate方法爲:無法通過Facebook的Android SDK中獲取的Facebook用戶信息

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    testtext = (TextView) findViewById(R.id.testtext); 

    loginButton = (LoginButton) findViewById(R.id.authButton); 
    loginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() { 
     @Override 
     public void onUserInfoFetched(GraphUser user) { 
      MainActivity.this.user = user; 
      System.out.println("user:"+user.getFirstName()); 
      testGet(); 

     } 
    }); 
} 

而且testGet()方法來測試獲取用戶的新聞提要:

public void testGet(){ 
    String[] requests = {"/me/home"}; 
    RequestBatch requestBatch = new RequestBatch(); 
    for (final String request : requests) { 
     requestBatch.add(new Request(Session.getActiveSession(), 
       request, null, null, new Request.Callback() { 
      public void onCompleted(Response response) { 
       GraphObject graphObject = response.getGraphObject(); 
       String s = testtext.getText().toString(); 
       if (graphObject != null) { 
         s = s + String.format("%s\n%s\n%s\n%s\n\n", 
           graphObject.getProperty("name"), 
           graphObject.getProperty("description"), 
           graphObject.getProperty("create_time"), 
           graphObject.getProperty("type")); 
       } 
       s = s + "\n hello, " + user.getFirstName() + "!\n"; 
       testtext.setText(s); 
       System.out.println(s); 
       testtext.setText(s); 
      } 
     })); 
    } 
    requestBatch.executeAsync(); 
} 

但是,在Android設備上運行應用程序之後,即使在我點擊Facebook登錄按鈕之前,它也會崩潰。

的錯誤是:

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String com.facebook.model.GraphUser.getFirstName()' on a null object reference 

這裏有什麼問題嗎?爲什麼在我登錄之前調用onUserInfoFetched()?

順便說一句,有沒有人知道如果我的testGet()方法是正確的獲取新聞提要?

謝謝!

回答

0

替換此

GraphObject graphObject = response.getGraphObject(); 

JSONObject object = user.getInnerJSONObject(); 
相關問題