java - firebase 数据库中子项的值显示为空

标签 java android firebase firebase-realtime-database

我通常使用 firebase 数据库,比如常量“名称”和变量“值”,但现在根据我的新项目,我试图将它们都作为变量,这意味着两者都不是由我决定的,而是由用户决定的...像这样 - https://ibb.co/cGh3qJ

我的错误 - https://ibb.co/hiJ4xy

代码

获取数据

Results results;
String Name, Score;
private void fetchResults() {
    mDatabaseReference.child("Users").child(id).child("Quiz").child("Results").child(id).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
                Name = childDataSnapshot.getKey().toString();
                Score = String.valueOf(childDataSnapshot.child(Name).getValue(Results.class));
                results = new Results(Name, Score);
                resultsList.add(results);
                mAdapter.notifyDataSetChanged();
            }
            mAdapter.notifyDataSetChanged();

                    }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException();
        }
    });
}

public class Results {
private String Name;
private String Score;

public Results() {
}

public Results(String Name, String Score) {
    this.Name = Name;
    this.Score = Score;
}

public String getName() {
    return Name;
}

public void setName(String name) {
    Name = name;
}

public String getScore() {
    return Score;
}

public void setScore(String score) {
    Score = score;
}

任何人都可以指出我哪里出错了......之前我也不知道这个名字,但不知何故我设法得到它,现在却在为得分而苦苦挣扎

错误

Process: com.appmaster.akash.messageplus, PID: 8881
                                             java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
                                                 at com.appmaster.akash.messageplus.TakingQuizDone$1.onDataChange(TakingQuizDone.java:68)
                                                 at com.google.android.gms.internal.zzduz.zza(Unknown Source)
                                                 at com.google.android.gms.internal.zzdwu.zzbvb(Unknown Source)
                                                 at com.google.android.gms.internal.zzdxa.run(Unknown Source)
                                                 at android.os.Handler.handleCallback(Handler.java:742)
                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                 at android.os.Looper.loop(Looper.java:157)
                                                 at android.app.ActivityThread.main(ActivityThread.java:5571)
                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)

最佳答案

改变这个:

 Score = String.valueOf(childDataSnapshot.child(Name).getValue(Results.class));

进入这个:

  Score =childDataSnapshot.child(Name).getValue().toString();

您的数据快照位于 userid 处,然后您在其中迭代并使用 getKey() 来检索名称,然后检索值,只需获取 child Name 的值。

关于java - firebase 数据库中子项的值显示为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50915474/

相关文章:

java - 包括来自不同于根目录的 .pde 文件

android - 如何通过单击每个项目中的复选框滚动到下一个项目(recyclerview)

Android以编程方式更改颜色描边(边框)

android - ColumnScope 修饰符作为可组合的参数

android - Firebase UI + Android 加载动画

java - windows下socket读取超时: strange hardcode in native method

java - 显示从第 100 列开始的 jtable - java

firebase - Firebase存储配额已超出

node.js - 火存储 : Document parent name lacks "/"

java - 如何将 CAS 身份验证与 Apache wicket 应用程序集成?