这是我的firebase数据库格式:
-组
-组名字
-用户组
-键1:“值1” -键2:“值2”
-键3:“值3”
我需要进入 value3
的 key3
.
我有 groupId
.
下面是我想出的代码。但是当我运行这个的时候,我的屏幕一直在崩溃。
private void method_does_user_belong_to_this_group() {
expected_key3 = editText_expected_key3.getText().toString();
reference.child("groups").orderByChild(groupId+"/"+"key3").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
key3 = snapshot.getValue().toString();
if (key3.equals(expected_key3)) {
Toast.makeText(RoomJoiningPage.this, "Key3 found.", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(RoomJoiningPage.this, "Key3 not found"+key3, Toast.LENGTH_SHORT).show();
}
}
else {
Toast.makeText(RoomJoiningPage.this, "Key3 not found"+key3, Toast.LENGTH_SHORT).show();;
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
我也试过这部分:
GroupDataClass groupDataClass = snapshot.getValue(GroupDataClass.class);
String key3 = groupDataClass.getKey();
在上述方法中省略这一部分:
key3 = snapshot.getValue().toString();
但即便如此,我的屏幕还是不断崩溃。
我们真诚地感谢您的帮助。
编辑-1
到目前为止我已经试过编辑代码了。现在崩溃已经停止,但我收到的值是“null”。
Log.d(LOG_TAG,"Debug Count - 12");
Log.d(LOG_TAG,"Entered else but didnt run the code below");
Toast.makeText(this, "Code entered.", Toast.LENGTH_SHORT).show();
reference_to_rooms_db = FirebaseDatabase.getInstance().getReference("rooms");
reference_to_rooms_db.orderByChild(string_current_users_number).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Log.d(LOG_TAG,"went inside \"onDataChanged\"");
if (snapshot.exists()) {
Log.d(LOG_TAG,"went inside \"if\"");
Log.d(LOG_TAG,"snapshot existed");
code = snapshot.child("code").getValue(String.class);
Log.d(LOG_TAG,"code copied - "+code+".");
Toast.makeText(RoomJoiningPage.this, "added code:"+code, Toast.LENGTH_SHORT).show();
Log.d(LOG_TAG,"toasted within \"if\"");
}
else {
Log.d(LOG_TAG,"went inside \"else\"");
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.d(LOG_TAG,"went inside \"onCancelled\"");
}
});
暂无答案!
目前还没有任何答案,快来回答吧!