Android 当我从firebase中删除值时,调用onDatachange并使应用程序崩溃
**我正在制作一个应用程序,它具有向用户发送请求的功能,我将发送者的用户id存储为密钥,“true”存储为用户发送请求时的值。但当他取消请求时,将调用从数据库中删除但在dataChange上的值,并将该值与代码中的null值进行比较**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
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());
}