首页 > 解决方案 > Firebase 无法识别用于设置值的字符串键

问题描述

我有一个加载了 FirebaseDatabse 项目(用户)的 ListView 活动。单击 ListView 的一个项目后,它会将相关用户的 item-Key(FirebaseDatabase Hash)传递给另一个 Activity,其中有一个确认按钮。单击确认按钮后,应在用户项键指定的 FirebaseDatabase 的项字段中设置一个确认值(“已接受”)。

问题是它没有。我的意思是,如果我使用 CURRENT userId 哈希,它会在 FirebaseDatabase 的 userId 字段中完美地设置“接受”,但如果我使用另一个项目用户的密钥,它就不会这样做。谁能告诉我为什么?

这是单击确认按钮的确认活动的一部分:

 riderKey = intentGet.getStringExtra("riderKey");

        Log.i("KeySetRider", riderKey);
        Log.i("KeySetUser", MainActivity.userId);

        FirebaseDatabase.getInstance().getReference().child("users").child(String.valueOf(riderKey )).child("Request").setValue("Accepted");
       FirebaseDatabase.getInstance().getReference().child("users").child(String.valueOf(MainActivity.userId )).child("Request").setValue("Accepted");

这是我在确认活动中获得的密钥:

2020-02-02 22:15:58.268 10620-10620/com.example.uberapp I/KeySetRider: XhNENH3g68SsrtPhmdFmY 
2020-02-02 22:15:58.268 10620-10620/com.example.uberapp I/KeySetUser: klaunWpq4ASLfiduCoU2d 

![在此处输入图像描述] 1

![在此处输入图像描述] 2

标签: javaandroidfirebase-realtime-database

解决方案


抱歉,我无法评论这个问题,所以我必须在这里写下我的评论,尽管我并没有真正发布解决方案。

我注意到您从 logcat 输出中复制的键与屏幕截图中出现的键不完全相同。它们似乎被截断了。知道为什么吗?如果在代码中您尝试使用正确的常量而不是变量,它会起作用吗?您如何接收/处理这些 ID 可能是个问题。

另一种假设可能是数据库中没有正确设置用户权限,因此只允许用户编辑他们的记录。不确定您的应用程序是否可以这样做,因为您只发布了这两条记录,我们不知道它们的存储位置以及您拥有的数据库配置。


推荐阅读