在Firebase数据库中搜索返回空值

时间:2020-05-11 12:23:04

标签: android firebase firebase-realtime-database

我正在开发一个必须从数据库中获取消息状态的应用程序,但是每当我尝试获取并显示数据时,该应用程序都会崩溃回到主屏幕。

user = FirebaseAuth.getInstance().getCurrentUser();
   String uid = user.getUid();
   database = FirebaseDatabase.getInstance();
   String msg = textView.getText().toString().trim();
   DatabaseReference myRef = database.getReference();
   myRef.child("Users").child(uid).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
           for(DataSnapshot db : dataSnapshot.getChildren()) {
              if(db.getKey().equals(textView.getText().toString().trim())) {
                  count=1;
                  String key = db.getKey();
                  String key2= db.child(key).child("status").getValue(String.class);
                                Toast.makeText(CheckMsg.this,key2, Toast.LENGTH_SHORT).show();
           }
        }
   }

数据库格式

This is how my database format looks

3 个答案:

答案 0 :(得分:1)

您应将key2语句修改为

String key2= db.child("status").getValue(String.class);

OR

String key2= dataSnapshot.child(key).child("status").getValue(String.class);

db已经是一个子元素,因为它是getChildren()的一个元素(例如abc和所有元素),并且您正在尝试查找名称为abc的子元素abc

答案 1 :(得分:1)

我认为崩溃是因为key2为空:

for loop中:

更改此:

String key2= db.child(key).child("status").getValue(String.class);

对此:

String key2= db.child("status").getValue(String.class);

答案 2 :(得分:0)

阅读提供的详细信息之后。

问题- 1)将密钥更新为
字符串key2=db.child("status").getValue(String.class);

尝试一下。如果这不起作用,请在下面评论...