【问题标题】:java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)'java.lang.NullPointerException:尝试调用接口方法“java.lang.Object java.util.List.get(int)”
【发布时间】:2019-06-22 15:49:50
【问题描述】:

我正在尝试将 WordPress 转换为移动应用程序,但这里出现错误 response.body().get(i).getLinks().getWpFeaturedmedia().get(0).getHref()));

请帮我解决它:

call.enqueue(new Callback<List<Kesehatan>>() {
    @Override
    public void onResponse(Call<List<Kesehatan>> call, Response<List<Kesehatan>> response) {
        Log.e("kesehatan fragment", " response " + response.body());

        mListPost = response.body();
        progressBar.setVisibility(View.GONE);

        for (int i = 0; i < response.body().size(); i++) {

            String temptdetails = response.body().get(i).getExcerpt().getRendered().toString();
            temptdetails = temptdetails.replace("<p>", "");
            temptdetails = temptdetails.replace("</p>", "");
            temptdetails = temptdetails.replace("[&hellip;]", "");

            list.add(new Model(Model.IMAGE_TYPE, response.body().get(i).getTitle().getRendered(),
                    temptdetails,
                    response.body().get(i).getLinks().getWpFeaturedmedia().get(0).getHref()));

            Log.e("main ", " title " + response.body().get(i).getTitle().getRendered() + " " +
                    response.body().get(i).getId());

        }

        adapter.notifyDataSetChanged();

    }

错误:

/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.dimasgs.bvet, PID: 11710
    java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
        at com.example.dimasgs.bvet.Fragments.KesehatanFragment$1.onResponse(KesehatanFragment.java:92)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7073)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

【问题讨论】:

标签: java android retrofit


【解决方案1】:

问题是因为您使用以下代码读取了两次响应流:

Log.e("kesehatan fragment", " response " + response.body());

mListPost = response.body();

您需要将response.body() 值存储到一个字符串中。像这样的:

String responseBody = response.body();
Log.e("kesehatan fragment", " response " + responseBody);
mListPost = responseBody;

详见本期:https://github.com/square/okhttp/issues/1240

【讨论】:

  • 我将此代码用于另一个片段,但未发现错误
猜你喜欢
  • 2020-02-17
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 2015-08-07
  • 2021-12-27
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
相关资源
最近更新 更多