ArrayAdapter 中的 NullPointerException

NullPointerException In ArrayAdapter

我尝试从 Firebase 获取数据,数据将显示在 'spinner' 微调器中显示的数据

但是

片段工作(Penilaian 片段),但是当我更改片段并单击其他片段中的对话框时,它显示这样的错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.sariazhariyah.eassessmentinteraktif, PID: 7214
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context androidx.fragment.app.FragmentActivity.getBaseContext()' on a null object reference
        at com.sariazhariyah.eassessmentinteraktif.PenilaianFragment.onEvent(PenilaianFragment.java:377)
        at com.sariazhariyah.eassessmentinteraktif.PenilaianFragment.onEvent(PenilaianFragment.java:366)
        at com.google.firebase.firestore.Query.lambda$addSnapshotListenerInternal(com.google.firebase:firebase-firestore@@21.4.3:1045)
        at com.google.firebase.firestore.Query$$Lambda.onEvent(Unknown Source:6)
        at com.google.firebase.firestore.core.AsyncEventListener.lambda$onEvent[=10=](com.google.firebase:firebase-firestore@@21.4.3:42)
        at com.google.firebase.firestore.core.AsyncEventListener$$Lambda.run(Unknown Source:6)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7860)
        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:1075)

在代码中,我写了一个这样的数组适配器

arraykelas.add("--Pilih Kelas--");
                      for(DocumentSnapshot documentSnapshot:queryDocumentSnapshots){
                          arraykelas.add(documentSnapshot.get("kelas").toString());
                      }

                      kelasarrayadapter = new ArrayAdapter(getActivity().getBaseContext(),android.R.layout.simple_spinner_dropdown_item,arraykelas);
                      kelasspinner.setAdapter(kelasarrayadapter);

当您更改片段时,您的函数会加载数据并尝试将其放入微调器中。但是微调器在另一个片段中。尝试解决它。我可能会出错,因为这里的代码不够。

当您尝试设置 Spinner 适配器时,您的 activity 上下文变为 null 当您使用另一个线程获取数据并且当响应到来时线程调用您调用的方法但您的片段不是在堆栈中,这就是为什么在您的响应到来后活动上下文也为空的原因您可以取消片段中的网络请求 onDestroy() 或者如果您想要一个简单的解决方案,您可以在任何地方使用上下文之前检查 getActivity()!=null