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

时间:2019-03-28 04:07:23

标签: java android firebase firebase-realtime-database

因此,我一直在尝试一种方法来检查用户是否已经向访问过的个人资料发送了好友请求,或者用户是否已从访问的个人资料中接收到好友请求。根据结果​​,按钮将设置为accept requestadd friendfriendsif

但是,在我的Firebase函数中,即使应该满足前三个else if语句,也无法满足。第一个value = {sentFriendRequests={jmarston=2}}语句应该有效,因为我已经向访问的个人资料发送了好友请求。

当我运行调试时,它显示类似else if的内容。因此Firebase知道我将John Marston加为朋友,但是由于某种原因else语句无效。它的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) { } }); } 语句代替了

我的代码在下面:

checkFriendRequestStatus函数

@Override
    public void onViewCreated(View view, Bundle savedInstanceState){
        sRFullName = (TextView) view.findViewById(R.id.sRUFullNameET);

        addFriendBtn = (Button) view.findViewById(R.id.sRUAddFriendBtn);
        sentRequestBtn = (Button) view.findViewById(R.id.sRUFriendReqSentBtn);
        acceptRequestBtn = (Button) view.findViewById(R.id.sRUAcceptRequestBtn);
        wereFriendsBtn = (Button) view.findViewById(R.id.sRUWeFriendsBtn);

        final String strVisitedUserID = getArguments().getString("sRUserID");
        final String visitedUsername = getArguments().getString("sRUsername");

        ShPreference = getActivity().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);

        // converts Stringed userID back to Int
        final String strSignedInUID = ShPreference.getInt(currentUserID, 0) + "";
        final String signedInUsername = ShPreference.getString(currentUsername, "");
        // converts the userSignedIn id to string
        //final String strSignedInUID = userSignedInID + "";

        // checks if the current User visited has been sent a friend Request
        checkFriendRequestStatus(new ButtonStatus() {
            @Override
            public void setButtonStatus(int choice, int button) {
                /**
                 * The choice params is for the choose if to show or hide buttons.
                 * The buttons params selects which buttons are to show or hide
                 */

                addFriendBtn.setVisibility(View.GONE);
                sentRequestBtn.setVisibility(View.GONE);
                acceptRequestBtn.setVisibility(View.GONE);
                wereFriendsBtn.setVisibility(View.GONE);

                // if choosed to show buttons
                if (choice == 1) {
                    // show buttons depending on the friendRequest status
                    if (button == 1) {
                        wereFriendsBtn.setVisibility(View.VISIBLE);
                    }
                    else if (button == 2) {
                        sentRequestBtn.setVisibility(View.VISIBLE);
                    }
                    else if (button == 3) {
                        acceptRequestBtn.setVisibility(View.VISIBLE);
                    }
                    else {
                        addFriendBtn.setVisibility(View.VISIBLE);
                    }
                }
            }
        }, strSignedInUID, visitedUsername, strVisitedUserID);


        // sets the name with the Full Name; called from SearchResultsAdapter
        sRFullName.setText(getArguments().getString("sRFullName"));
    }

onViewCreated函数

{{1}}

1 个答案:

答案 0 :(得分:0)

要比较String对象,请使用equals而不是==(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) {

            }
        });
    }