Firebase“无法将类型java.util.HashMap的值转换为int" [英] Firebase "Failed to convert a value of type java.util.HashMap to int"
问题描述
在ValueEvenListener
的OnDataChange()
方法中代码的这一行:
At this line of my code in my OnDataChange()
method in the ValueEvenListener
:
int latest = dataSnapshot.getValue(Integer.class);
我收到错误Failed to convert a value of type java.util.HashMap to int
的DatabaseException
.
但是,在我的数据库中,您可以查看下图:
However, in my database, you can take a look at the image below:
它显然不是HashMap
,而是int
.这是一个错误还是我做错了什么?我该如何解决?为什么当值为int
时检索Hashmap
?
It is obviously not a HashMap
but an int
. Is this a bug or am I doing something wrong? What can I do to fix it? Why is it retrieving a Hashmap
when the value is int
?
完整数据快照:
final DatabaseReference database = FirebaseDatabase.getInstance().getReference();
database.child("Campaigns").child(key).child("count");
database.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int latest = dataSnapshot.getValue(Integer.class);
button.setText(latest + "");
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(context, context.getString(R.string.error) + ": " + databaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
数据库:
Campaigns:{
-JDKKDJIIDJFIDJKDK:{
count:2432
}
}
推荐答案
事实证明,我不得不再次将dataSnapshot设置为子目标.例如:
It turns out I had to child dataSnapshot to my destination again. E.g:
int latest = dataSnapshot.child("Campaigns").child(key).child("count").getValue(Integer.class);
默认情况下,dataSnapshot
实际上是我的整个数据库.
By default dataSnapshot
is actually my whole database.
这篇关于Firebase“无法将类型java.util.HashMap的值转换为int"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!