主题:在firebase android中查询-数据检索

von4xj4u  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(224)

这是我的firebase数据库格式:
-组
  -组名字
    -用户组
      -键1:“值1”      -键2:“值2”
      -键3:“值3”
我需要进入 value3key3 .
我有 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\"");
            }
        });

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题