我正在开发一个必须从数据库中获取消息状态的应用程序,但是每当我尝试获取并显示数据时,该应用程序都会崩溃回到主屏幕。
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();
}
}
}
数据库格式
答案 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);
尝试一下。如果这不起作用,请在下面评论...