我通常使用firebase数据库,如常量'Name'和变量'Value',但现在根据我的新项目我试图将它们作为变量,这意味着两者都不是由我而是用户决定的......像这样 - 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)
答案 0 :(得分:1)
改变这个:
Score = String.valueOf(childDataSnapshot.child(Name).getValue(Results.class));
进入这个:
Score =childDataSnapshot.child(Name).getValue().toString();
您的数据快照位于userid
,然后您在其中进行迭代并使用getKey()
来检索名称,然后检索该值以获取子{{1}的值}}
答案 1 :(得分:0)
您需要更改
$('#formButton').off().on('click', function () {
$(".fbutton").each(function () {
$(this).prop("disabled", true);
});
$(this).prop("disabled", false);
});
$('#formButton2').off().on('click', function () {
$(".fbutton").each(function () {
$(this).prop("disabled", true);
});
$(this).prop("disabled", false);
});
进入这个:
Score = String.valueOf(childDataSnapshot.child(Name).getValue(Results.class));
您的实施问题是您已经在迭代Score = (String) childDataSnapshot.getValue();
的子项。因此,您不需要提供密钥并获取值,dataSnapshot
具有值。