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

因此,我一直在尝试实现一种方法来检查用户是否已向访问的个人资料发送了朋友请求,或者用户是否从访问的个人资料中收到了朋友请求。根据结果,按钮将设置为 、 或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


千巷猫影
浏览 110回答 1
1回答

SMILET

要比较 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) {            }        });    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java