首页 > 解决方案 > 通知节点未删除通知及其在 ImageView 上的数据应何时单击

问题描述

我的 Activity 中有两种方法,一种是在评论中添加点赞(单击ImageView)和向 Firebase 发送通知,并且发布它的用户也会收到通知,然后是另一种删除它(ImageView再次单击)。问题是通知和评论都显示出来,并保存到数据库中,但是当我再次单击删除“喜欢”时,评论会从数据库中删除,但通知没有。

有人可以帮我解决这种方法的逻辑。我做错了,因为通知没有被删除,只有评论。

 private void likeComment(String commentId, String postId, String userId) {
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Comments Liked").child(commentId).child(mFirebaseUser.getUid());

        mNotificationId = reference.push().getKey();

        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("notificationId", mNotificationId);
        hashMap.put("commentid", commentId);
        hashMap.put("userid", mFirebaseUser.getUid());

        reference.setValue(hashMap);

        HashMap<String, Object> hashMap1 = new HashMap<>();
        hashMap1.put("userid", mFirebaseUser.getUid());
        hashMap1.put("comment", "liked your comment");
        hashMap1.put("postid", postId);
        hashMap1.put("ispost", true);
        hashMap1.put("notificationId", mNotificationId);

        FirebaseDatabase.getInstance().getReference("Notifications").child(userId).child(mNotificationId).setValue(hashMap1);
    }

    private void removeLike(String userId, String commentId) {
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Comments Liked").child(commentId).child(mFirebaseUser.getUid());
        reference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    String notificationId = dataSnapshot.child("notificationId").getValue(String.class);
                    if (notificationId != null) {
                        FirebaseDatabase.getInstance().getReference("Notifications").child(userId).child(notificationId).removeValue();
                        reference.removeValue();
                    }
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

标签: javaandroidfirebase

解决方案


推荐阅读