ArrayAdapter中的NullPointerException

问题描述 投票:0回答:2

我已经尝试从Firebase获取数据,并且数据将显示在微调器中旋转器中显示的数据

但是

片段工作(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$5.onEvent(PenilaianFragment.java:377)
        at com.sariazhariyah.eassessmentinteraktif.PenilaianFragment$5.onEvent(PenilaianFragment.java:366)
        at com.google.firebase.firestore.Query.lambda$addSnapshotListenerInternal$2(com.google.firebase:firebase-firestore@@21.4.3:1045)
        at com.google.firebase.firestore.Query$$Lambda$3.onEvent(Unknown Source:6)
        at com.google.firebase.firestore.core.AsyncEventListener.lambda$onEvent$0(com.google.firebase:firebase-firestore@@21.4.3:42)
        at com.google.firebase.firestore.core.AsyncEventListener$$Lambda$1.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);
android arraylist spinner
2个回答
0
投票

当您更改片段时,您的函数将加载数据并尝试将其放入微调器。但是微调器中还有其他片段。尝试解决它。我可能会犯错,因为这里的代码不足。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.