Firebase“无法将类型java.util.HashMap的值转换为int" [英] Firebase "Failed to convert a value of type java.util.HashMap to int"

查看:47
本文介绍了Firebase“无法将类型java.util.HashMap的值转换为int"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

ValueEvenListenerOnDataChange()方法中代码的这一行:

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 intDatabaseException.

但是,在我的数据库中,您可以查看下图:

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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆