Java 读取Firebase数据返回空值

Java 读取Firebase数据返回空值,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,这种方法应该是随机阅读问题,但首先出于测试目的,我试图看看它是否可以阅读一个问题,但没有奏效 public void RetreiveNewQuestions(){ Random random = new Random(); int questionInt1; questionInt1 = random.nextInt(2-1) + 1; String uid = FirebaseAuth.getInstance().getCurrentUser().getUid

这种方法应该是随机阅读问题,但首先出于测试目的,我试图看看它是否可以阅读一个问题,但没有奏效

public void RetreiveNewQuestions(){
    Random random = new Random();
    int questionInt1;
    questionInt1 = random.nextInt(2-1) + 1;
    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    FirebaseDatabase.getInstance().getReference().child("questions").child("animal").child("1").child("question").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
           String question1 = dataSnapshot.getValue(String.class);
           question[0] = question1;

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

如果您只想得到第一个问题,请使用以下代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);

    questionRef = FirebaseDatabase.getInstance().getReference("questions");
    category = "animal";
    RetreiveNewQuestions();

    String quizData[][] = {
            //Format, {Question, right answer, option1, option2, option3}
            {question[0], "Log", "Tree", "Knee"," Bee"},
            { "Potato", "Rar", "Laugh", "Test","Minute"}
    };
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("questions").child("animal").child("1");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String question = dataSnapshot.child("questions").getValue(String.class);
        Log.d("TAG", question);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(valueEventListener);
如果您想获得所有问题,请使用以下代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);

    questionRef = FirebaseDatabase.getInstance().getReference("questions");
    category = "animal";
    RetreiveNewQuestions();

    String quizData[][] = {
            //Format, {Question, right answer, option1, option2, option3}
            {question[0], "Log", "Tree", "Knee"," Bee"},
            { "Potato", "Rar", "Laugh", "Test","Minute"}
    };
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("questions").child("animal").child("1");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String question = dataSnapshot.child("questions").getValue(String.class);
        Log.d("TAG", question);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(valueEventListener);

你能解释更多“但不起作用”吗?试着转到child(“1”),然后在onDataChange方法下使用ddataSnapshot获取dataSnapshot.getValue(String.class)中的data.String.class;不需要