简体   繁体   中英

My Firebase is not retrieving data from Firebase Database

I have seen many other similar questions and also tried their method but still its not working.

我的数据库图片

My getFirebase function on a Click Listener:

 private void getFirebase() {
    firebaseDatabase = FirebaseDatabase.getInstance();
    reference = firebaseDatabase.getReference().child("Questions/m1");
    List<String> list = new ArrayList<>();
    Log.d("QuizFragment", "getfirebase");

    reference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.d("QuizFragment", " Snapshots");
            list.add(dataSnapshot.getValue().toString());
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d("QuizFragment", "error  " + databaseError.toString());
        }
    });
    Log.d("QuizFragment","debug");
}

My Logcat is showing getFirebase and then directly debug message. I have seen many answer to wait for execution of SingleEvent but I have waited for many time still its not showing. Note: I am running app on emulator

addListenerForSingleValueEvent will get the data from the local disk cache.If you don't have any data in your cache you won't get any data.i believe that's why you could not get into onDataChange(). so first get data at least once like this

 firebaseDatabase.getReference().child("Questions/m1")
    .get()
    .addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DataSnapshot> task) {
            if (!task.isSuccessful()) {
                Log.e("firebase", "Error getting data", task.getException());
            }
            else {
                Log.d("firebase", String.valueOf(task.getResult().getValue()));
            }
        }
    });

//then use cache data.  

reference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.d("QuizFragment", " Snapshots");
            list.add(dataSnapshot.getValue().toString());
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d("QuizFragment", "error  " + databaseError.toString());
        }
    });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM