我在使用Facebook API解析图请求响应时遇到麻烦。
我的请求如下(其中pageID是我需要的Facebook页面的ID):
GraphRequest request = GraphRequest.newGraphPathRequest(
accessToken,
"/PageID/feed",
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
try {
JSONArray feedArray = response.getJSONObject().getJSONArray("data");
for(int i = 0; i < feedArray.length(); i++) {
JSONObject feedObj = (JSONObject) feedArray.get(i);
FeedItem item = new FeedItem();
item.setId(feedObj.getString("id"));
item.setMessage(feedObj.getString("message"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,message,link,full_picture");
request.setParameters(parameters);
request.executeAsync();
但是,我的pb在注释行“ //在此处插入代码”的位置。 我按照androidhive上的教程进行操作,但是仍然遇到问题。
我的堆栈跟踪:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.apps.neandril.magic, PID: 29809
java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)' on a null object reference
at com.apps.neandril.magic.WelcomeActivity$1.onCompleted(WelcomeActivity.java:135)
at com.facebook.GraphRequest$5.run(GraphRequest.java:1368)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
和空对象引用,请参考此行:
JSONArray feedArray = response.getJSONObject().getJSONArray("data");
如果您需要更多说明,请随时告诉我:)。
有人可以帮助我吗?
非常感谢。
答案 0 :(得分:0)
for (int i = 0; i < data.length(); i++) {
JSONObject feedObj = (JSONObject) data.get(i);
FeedItem item = new FeedItem();
item.setId(feedObj.getString("id"));
item.setMessage(feedObj.getString("message"));
feedItems.add(item);
}
您可以将数据输入到item
中,并且所有提要都添加到feedItems
中,因此您可以使用feedItems
这样的"// insert your code here"