Android 当我从firebase中删除值时,调用onDatachange并使应用程序崩溃

Android 当我从firebase中删除值时,调用onDatachange并使应用程序崩溃,android,firebase-realtime-database,Android,Firebase Realtime Database,**我正在制作一个应用程序,它具有向用户发送请求的功能,我将发送者的用户id存储为密钥,“true”存储为用户发送请求时的值。但当他取消请求时,将调用从数据库中删除但在dataChange上的值,并将该值与代码中的null值进行比较** friend_requests = FirebaseDatabase.getInstance().getReference().child("Users").child(phone) .child("Friend_Requ

**我正在制作一个应用程序,它具有向用户发送请求的功能,我将发送者的用户id存储为密钥,“true”存储为用户发送请求时的值。但当他取消请求时,将调用从数据库中删除但在dataChange上的值,并将该值与代码中的null值进行比较**

friend_requests = FirebaseDatabase.getInstance().getReference().child("Users").child(phone)
                    .child("Friend_Requests").child(user.getPhoneNumber());
            friend_requests.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if(dataSnapshot.getValue().equals("null"))
                    {

                    }
                    else
                    {
                        follow.setText("Requested");
                    }
                        Log.d("ahmed12", "onDataChange: "+dataSnapshot.getValue());


                }

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

                }

最简单的更改是反向比较:

if("null".equals(dataSnapshot.getValue(String.class)))
这应该可以消除错误消息,尽管很难说它是否能满足您的要求

后者的原因是与文本
“null”
字符串进行比较非常少见。通常,代码会与
null
(而不是
“null”
)进行比较,以查看是否初始化了某个值

例如,如果要检查快照是否有值,可以使用以下方法:

if(dataSnapshot.getValue(String.class) != null)
或者更简单:

if(dataSnapshot.exists())

试试这个。您正在检查String=“null”这是一个值

 @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(dataSnapshot.getValue()==null)
                {
                   //Logic for cancelled friend request
                }
                else
                {
                    follow.setText("Requested");
                }
                    Log.d("ahmed12", "onDataChange: "+dataSnapshot.getValue());

            }