为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase Android Java - 无法获得孩子的价值

Firebase Android Java - 无法获得孩子的价值

千巷猫影 2022-09-07 17:33:18
因此,我一直在尝试实现一种方法来检查用户是否已向访问的个人资料发送了朋友请求,或者用户是否从访问的个人资料中收到了朋友请求。根据结果,按钮将设置为 、 或sent requestaccept requestadd friendfriends但是,在我的 Firebase 函数中,即使应该满足其中一个语句,也不会满足前 3 个语句。第一个语句应该有效,因为我已经向访问的个人资料发送了加好友请求。ifelse if当我运行调试时,它显示类似.所以Firebase知道我把约翰·马斯顿(John Marston)作为朋友加了进来,但由于某种原因,这种说法不起作用。相反,它是有效的语句value = {sentFriendRequests={jmarston=2}}else ifelse我的代码在下面:检查好友请求状态函数private void checkFriendRequestStatus(final ButtonStatus buttonsCallback, final String strSignedInUID, final String visitedUsername, final String strVisitedUID) {        final DatabaseReference checkFriendRequestsRef = database.getReference("friend_requests/test/" + strSignedInUID);        checkFriendRequestsRef.addListenerForSingleValueEvent(new ValueEventListener() {            @Override            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {                // choice is 1 to show buttons, then select which buttons to show with second params                if (dataSnapshot.child("friends/" + visitedUsername).getValue(String.class) == strVisitedUID) {                    buttonsCallback.setButtonStatus(1, 1);                }                else if (dataSnapshot.child("sentFriendRequest/" + visitedUsername).getValue(String.class) == strVisitedUID) {                    buttonsCallback.setButtonStatus(1, 2);                }                else if (dataSnapshot.child("receivedFriendRequests/" + visitedUsername).getValue(String.class) == strVisitedUID) {                    buttonsCallback.setButtonStatus(1, 3);                }                else {                    buttonsCallback.setButtonStatus(1, 4);;                }            }            @Override            public void onCancelled(@NonNull DatabaseError databaseError) {            }        });    }onViewCreated function
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

要比较 String 对象,请使用 equal 而不是 == (double equals)。双相等将比较参考而不是它们的值。


更新您的比较代码,如下所示:


private void checkFriendRequestStatus(final ButtonStatus buttonsCallback, final String strSignedInUID, final String visitedUsername, final String strVisitedUID) {

        final DatabaseReference checkFriendRequestsRef = database.getReference("friend_requests/test/" + strSignedInUID);

        checkFriendRequestsRef.addListenerForSingleValueEvent(new ValueEventListener() {

            @Override

            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


                // choice is 1 to show buttons, then select which buttons to show with second params

                if (dataSnapshot.child("friends/" + visitedUsername).getValue(String.class).equals(strVisitedUID)) {

                    buttonsCallback.setButtonStatus(1, 1);

                }

                else if (dataSnapshot.child("sentFriendRequest/" + visitedUsername).getValue(String.class).equals(strVisitedUID)) {

                    buttonsCallback.setButtonStatus(1, 2);

                }

                else if (dataSnapshot.child("receivedFriendRequests/" + visitedUsername).getValue(String.class).equals(strVisitedUID)) {

                    buttonsCallback.setButtonStatus(1, 3);

                }

                else {

                    buttonsCallback.setButtonStatus(1, 4);;

                }

            }


            @Override

            public void onCancelled(@NonNull DatabaseError databaseError) {


            }

        });

    }


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信