2021年4月5日星期一

java.lang.NullPointerException on a null object reference. when accessing "kelas" in firebase android studio

i was trying to get this specific data from my database(kelas). What i'm doing here is to get this kelas value and store it to String kelas in getList() and use it in IF to check if it have value of 10 or 11, let say String kelas in getList() has value of 10, if it true then i'm gonna store some data in recycleview(databaseReference = FirebaseDatabase.getInstance().getReference("DaftarMapel10");), but it's not working, i tried to change the code but still got java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference.

As you can see in the comments, @Yegorft said that String kelas = snapshot.getValue(String.class); This var is null. Make sure, that it is present in your database. But i don't understand it, i tried to use constructor but same result.

Here is my Fragment:

public class NilaiFragment extends Fragment {    FirebaseAuth firebaseAuth;  String userID;  DatabaseReference databaseReference;  private NilaiViewModel nilaiViewModel;  DatabaseReference matchData;  FirebaseFirestore firebaseFirestore;  private List<NilaiHelperClass> list;  NilaiHelperAdapter nilaiHelperAdapter;  RecyclerView nilaiRecyclerView;  DatabaseReference rootRef;  DatabaseReference yourRef;  String userid;      public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        nilaiViewModel = new ViewModelProvider(this).get(NilaiViewModel.class);      View root = inflater.inflate(R.layout.fragment_nilai, container, false);        firebaseAuth = FirebaseAuth.getInstance();      userID = firebaseAuth.getCurrentUser().getUid();      userid = firebaseAuth.getCurrentUser().getUid();      databaseReference = FirebaseDatabase.getInstance().getReference("DaftarMapel10");      matchData = FirebaseDatabase.getInstance().getReference().child("AkunSiswa");        nilaiRecyclerView = root.findViewById(R.id.rvNilaiKelas);      nilaiRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));      nilaiRecyclerView.setNestedScrollingEnabled(false);      nilaiRecyclerView.setHasFixedSize(false);      list = new ArrayList<>();          getList();          return root;  }  

Here is where the error happened:

    private void getList(){        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();      firebaseDatabase.getReference().child("AkunSiswa").child(userid).child("kelas").addListenerForSingleValueEvent(new ValueEventListener() {          @Override          public void onDataChange(@NonNull DataSnapshot snapshot) {              String kelas = snapshot.getValue(String.class);              if (kelas.equals("10")){                  databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {                      @Override                      public void onDataChange(@NonNull DataSnapshot snapshot) {                          for(DataSnapshot dataSnapshot:snapshot.getChildren()){                              NilaiHelperClass nilaiHelperClass = dataSnapshot.getValue(NilaiHelperClass.class);                              list.add(nilaiHelperClass);                          }                          nilaiHelperAdapter = new NilaiHelperAdapter(list);                          nilaiRecyclerView.setAdapter(nilaiHelperAdapter);                      }                        @Override                      public void onCancelled(@NonNull DatabaseError error) {                        }                  });              }              if (kelas.equals("11")){                  nilaiRecyclerView.setVisibility(View.GONE);              }          }            @Override          public void onCancelled(@NonNull DatabaseError error) {            }      });  }  

this is the error:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference      at com.example.skripsi.ui.Nilai.NilaiFragment$1.onDataChange(NilaiFragment.java:125)      at com.google.firebase.database.Query$1.onDataChange(Query.java:189)      at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)      at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)      at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)      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:7948)      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)  

This is my database:

This is my database

https://stackoverflow.com/questions/66952623/java-lang-nullpointerexception-on-a-null-object-reference-when-accessing-kelas April 05, 2021 at 07:54PM

没有评论:

发表评论