Android - Разбор ответа на график в Facebook - PullRequest
0 голосов
/ 03 июля 2018

У меня проблемы с анализом ответа на запрос графика с помощью API Facebook.

Мой запрос, как показано ниже (где pageID - это идентификатор нужной мне страницы Facebook):

            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");

Если вам нужно больше объяснений, не стесняйтесь сказать мне:).

Кто-нибудь может мне помочь, пожалуйста?

Большое спасибо.

1 Ответ

0 голосов
/ 03 июля 2018
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"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...