Android Firebase';s orderBychild().equals未提取任何数据
考虑:Android Firebase';s orderBychild().equals未提取任何数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,考虑: mDatabase = FirebaseDatabase.getInstance().getReference("archive"); mDatabase.orderByChild("_age").equalTo("20").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { valu
mDatabase = FirebaseDatabase.getInstance().getReference("archive");
mDatabase.orderByChild("_age").equalTo("20").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
value = dataSnapshot.getValue(String.class);
tSResult.setText(value);
}
@Override
public void onCancelled(DatabaseError error) {
Log.w(TAG, "Failed to read value.", error.toException());
}
});
tSResult
是我用来测试返回数据的文本视图
我试图运行这段代码,但我的应用程序要么崩溃,要么不返回任何结果
日志:
04-26 19:51:24.146 4372-4372/com.example.joe.orside E/AndroidRuntime:致命异常:主
进程:com.example.joe.orside,PID:4372
com.google.firebase.database.DatabaseException:转换失败
java.util.HashMap类型的值映射到字符串
在com.google.android.gms.internal.zzbqi.zzaD(未知来源)
在com.google.android.gms.internal.zzbqi.zzb(未知来源)
在com.google.android.gms.internal.zzbqi.zza(未知来源)
位于com.google.firebase.database.DataSnapshot.getValue(未知源)
在
com.example.joe.orside.MainActivity$8$1.onDataChange(MainActivity.java:755)
在com.google.firebase.database.Query$1.onDataChange(未知来源)
在com.google.android.gms.internal.zzbmz.zza(未知来源)
在com.google.android.gms.internal.zzbnz.zzYj(未知来源)
在com.google.android.gms.internal.zzboc$1.run(未知来源)
位于android.os.Handler.handleCallback(Handler.java:751)
位于android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:154)
位于android.app.ActivityThread.main(ActivityThread.java:6119)
在java.lang.reflect.Method.invoke(本机方法)
在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
有什么建议吗?您必须迭代您的
DataSnapshot
Query query = mDatabase.orderByChild("_age").equalTo("20");
query .addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getChildrenCount() > 0){
System.out.println("count : "+ dataSnapshot.getChildrenCount());
for(DataSnapshot child : dataSnapshot.getChildren()){
value = child.getValue(String.class);
tSResult.setText(value);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
您必须迭代您的
DataSnapshot
Query query = mDatabase.orderByChild("_age").equalTo("20");
query .addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getChildrenCount() > 0){
System.out.println("count : "+ dataSnapshot.getChildrenCount());
for(DataSnapshot child : dataSnapshot.getChildren()){
value = child.getValue(String.class);
tSResult.setText(value);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
它崩溃的原因是:
value = dataSnapshot.getValue(String.class);
将其更改为:
Hashmap<String,Object> value = (HashMap<String, Object>)dataSnapshot.getValue();
Hashmap value=(Hashmap)dataSnapshot.getValue();
它崩溃的原因是:
value = dataSnapshot.getValue(String.class);
将其更改为:
Hashmap<String,Object> value = (HashMap<String, Object>)dataSnapshot.getValue();
Hashmap value=(Hashmap)dataSnapshot.getValue();
post崩溃日志。@我试过KishoreJethava。它也崩溃了。崩溃后日志。@KishoreJethava我试过了。它也坠毁了。