我已经尝试从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);
当您更改片段时,您的函数将加载数据并尝试将其放入微调器。但是微调器中还有其他片段。尝试解决它。我可能会犯错,因为这里的代码不足。
[当您尝试设置微调适配器时,您的活动上下文会为空,当您使用另一个线程获取数据时,并且当响应到来时,线程会调用您所调用的方法,但您的片段不在堆栈中,这就是可能的原因响应到来后context也为null,您可以在片段onDestroy()中取消网络请求,或者如果您想要一个简单的解决方案,则可以在任何地方使用上下文之前检查getActivity()!= null。