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()方法是正確的獲取新聞提要?
謝謝!