온송정
온송정

Reputation: 37

I am having a problem with the java.lang.IllegalStateException error

An error occurs when moving between tabs. The scenario I expect is that an error occurs when moving the screen quickly before the image is loaded... I don't know the exact reason.

Below is the error code that occurs.

    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)

ImagesAdapter code.

    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 code.

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();
    }

});

I've been working hard to release the app, and I've already released it and have been servicing it, but I'm worried about that problem. If anyone has experienced something similar to me or knows the answer to this, I'd love to help. Thank you in advance.

Upvotes: 0

Views: 423

Answers (1)

ΓDΛ
ΓDΛ

Reputation: 11060

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

to

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

Make sure you have context installed.

Upvotes: 1

Related Questions