java - 我遇到了 java.lang.IllegalStateException 错误的问题
问题描述
在选项卡之间移动时发生错误。我期望的场景是在加载图像之前快速移动屏幕时会发生错误......我不知道确切的原因。
下面是发生的错误代码。
2021-08-03 19:58:58.979 32451-32451/com.offsong.stayc_wallpaper E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.offsong.stayc_wallpaper, PID: 32451
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
at com.offsong.stayc_wallpaper.utils.ImagesAdapter.<init>(ImagesAdapter.java:30)
at com.offsong.stayc_wallpaper.Tab3$3.onResponse(Tab3.java:81)
at retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1.lambda$onResponse$0$DefaultCallAdapterFactory$ExecutorCallbackCall$1(DefaultCallAdapterFactory.java:89)
at retrofit2.-$$Lambda$DefaultCallAdapterFactory$ExecutorCallbackCall$1$hVGjmafRi6VitDIrPNdoFizVAdk.run(Unknown Source:6)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
图像适配器代码。
public class ImagesAdapter extends BaseAdapter {
private final Context mContext;
private final List<String> mImagesList;
private final LayoutInflater mInflater;
public ImagesAdapter(Context context, List<String> list) {
this.mContext = context;
this.mImagesList = list;
this.mInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
}
Tab3 代码。
private void getImages() {
Call<List<String>> imagesResponse = NetworkUtils.getInterface().loadImages3();
imagesResponse.enqueue(new Callback<List<String>>() {
@Override
public void onResponse(Call<List<String>> call, Response<List<String>> response) {
if (response.isSuccessful()) {
mImagesLinks = response.body();
ImagesAdapter imagesAdapter = new ImagesAdapter(getActivity(), mImagesLinks);
mGridView.setAdapter(imagesAdapter);
imagesAdapter.notifyDataSetChanged();
Collections.shuffle(mImagesLinks);
} else {
Toast.makeText(getActivity(), R.string.error_response, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<List<String>> call, Throwable t) {
Toast.makeText(getActivity(), t.getLocalizedMessage(), Toast.LENGTH_LONG).show();
}
});
我一直在努力发布这个应用程序,我已经发布了它并一直在维护它,但我很担心这个问题。如果有人遇到过与我类似的事情或知道答案,我很乐意提供帮助。先感谢您。
解决方案
this.mInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);
至
this.mInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
确保您已安装上下文。
推荐阅读
- javascript - 使用隐藏的表单字段来存储 JSON,然后解析它。JSON 解析失败
- r - 基于两个分组变量的变量总和 - 上一年
- javascript - 使用 ASP.NET MVC 5 应用程序设置 ReactJS
- c# - 从文档的对象映射元数据生成文档?
- php - 如何在 Laravel 中将文件与“请求”合并?
- prolog - 理解具体化——“x 和 y 之间有什么关系?”
- c# - 将分配给模型的值发布到方法时如何保持它?
- css - 无法让 flexbox 为 safari 工作(仅),适用于其他一切
- sql - SQL 将逐年行插入子表 - 避免重复
- ios - 如何在 UICollectionView Swift 中内联播放视频?