java - java.lang.NullPointerException:尝试调用接口方法“java.lang.Object java.util.List.get(int)”
问题描述
我正在尝试将 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("[…]", "");
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)
解决方案
问题是因为您使用以下代码读取了两次响应流:
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
推荐阅读
- python - 带有 tf.hessians 的 keras 模型的 hessian 矩阵
- javascript - 尝试获取特定数据但得到“无法读取 XMLHttpRequest.xhr.onreadystatechange 处未定义的属性 '0'”
- angular - 在 Angular 中使用 Javascript 访问 png 元数据
- r - 如何让 R 为 A 列中的每个唯一变量返回 B 列的最大值?
- asp.net - IIS 请求在 BeginRequest - IIS Web 代码中被触发
- c# - 依赖注入自定义文件提供程序以进行运行时编译
- rest - Docusign REST API:使用 Microsoft Flow 的 JWT Grant 实现 OAuth 身份验证
- git - 忽略对 git 中添加的文件的更新
- python - 在 Tensorflow 中,我如何 (1) 计算梯度和 (2) 更新 *separate* @tf.function 方法中的变量?
- flutter - 在下一个屏幕的顶部放置一个小部件?