I am trying to get the database collection from Firestore but getting two errors first warning is:
Do not place Android context classes in static fields
Second, when I call the database, it shows:
java.lang.NullPointerException: Attempt to invoke virtual method
I found so many similar questions, but it does not help me so I asked new question
public static List<BookModel> bookList = new ArrayList<>();
public static FirebaseFirestore g_firestore;
public static void LoadBook(MyCompleteListener completeListener){
bookList.clear();
g_firestore.collection("BOOKS").get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
Map<String, QueryDocumentSnapshot> docList = new ArrayMap<>();
for (QueryDocumentSnapshot doc: queryDocumentSnapshots ){
docList.put(doc.getId(),doc);
}
QueryDocumentSnapshot bookListDoc = docList.get("Categories");
assert bookListDoc != null;
Long bookCount = bookListDoc.getLong("COUNT");
for (int i=1; 1<= bookCount ;i++){
String bookID = bookListDoc.getString("BOOK"+String.valueOf(i)+"_ID");
QueryDocumentSnapshot bookDoc = docList.get(bookID);
assert bookDoc != null;
int noOfBook = Objects.requireNonNull(bookDoc.getLong("NO_OF_BOOK")).intValue();
String bookName = bookDoc.getString("NAME");
String bookType = bookDoc.getString("TYPE");
bookList.add(new BookModel( bookID,bookName,bookType,noOfBook));
}
completeListener.onSuccess();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
}
java.lang.RuntimeException: Unable to start activity
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.firestore.CollectionReference com.google.firebase.firestore.FirebaseFirestore.collection(java.lang.String)' on a null object reference` at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782)
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782)