首页 > 解决方案 > 我遇到了 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();
    }

});

我一直在努力发布这个应用程序,我已经发布了它并一直在维护它,但我很担心这个问题。如果有人遇到过与我类似的事情或知道答案,我很乐意提供帮助。先感谢您。

标签: javaandroid

解决方案


this.mInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE);

this.mInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);

确保您已安装上下文。


推荐阅读