作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
错误
FATAL EXCEPTION: main
Process: com.appmaster.akash.messageplus, PID: 978
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.appmaster.akash.messageplus.Results
at com.google.android.gms.internal.zzear.zzb(Unknown Source)
at com.google.android.gms.internal.zzear.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.appmaster.akash.messageplus.TakingQuizDone$1.onChildAdded(TakingQuizDone.java:65)
at com.google.android.gms.internal.zzdri.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)
代码
private void fetchResults() {
mDatabaseReference.child("Users").child(id).child("Quiz").child("Results").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Results results = dataSnapshot.getValue(Results.class);
resultsList.add(results);
mAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
}
数据库
结果.java
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;
}
}
错误在于数据库中的名称和值均未修复。就像它根据用户决定的那样。
保存数据
String name = RecieversName;
HashMap<String, String> userMap = new HashMap<>();
userMap.put(name, String.valueOf(mScore));
mRef.child("Users").child(RecieversId).child("Quiz").child("Results").setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Intent intent = new Intent(TakingQuiz.this, TakingQuizDone.class);
intent.putExtra("RecieversId",RecieversId);
intent.putExtra("Score", mScore.toString());
startActivity(intent);
finish();
}
}
});
最佳答案
看起来您想一次性处理 .../Results
下的所有结果。在这种情况下,您应该使用 ValueEventListener
而不是 ChildEventListener
。
此外,您的 Results
类与 JSON 数据结构不匹配。这意味着当您调用 getValue(Results.class)
时,Firebase 无法自动将 JSON 的属性读取到 Results
对象中。相反,您必须自己进行转换。
mDatabaseReference.child("Users").child(id).child("Quiz/Results").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot resultSnapshot: dataSnapshot.getChildren()) {
String user = resultSnapshot.getKey();
String score = resultSnapshot.getValue(String.class);
Results results = new Results(user, score);
resultsList.add(results);
}
mAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
})
关于java - DatabaseException - 无法将 java.lang.String 类型的对象转换为 com.appmaster.akash.messageplus.Results 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50552687/
我正在运行一个具有 8 个 vCore 和 8Gb 总内存的本地 Yarn 集群。 工作流程是这样的: YarnClient 提交在容器中启动 AppMaster 的应用请求。 AppMaster 启
错误 FATAL EXCEPTION: main Process: com.appmaster.akash.messageplus, PID: 978 com.google.firebase.da
我是一名优秀的程序员,十分优秀!