gpt4 book ai didi

java - 方法调用 equals 可能会产生 java NullpointerException

转载 作者:行者123 更新时间:2023-12-02 09:31:30 25 4
gpt4 key购买 nike

对 Java 非常陌生,想知道为什么我不断收到此错误:方法调用“equals”和“getUId 可能会产生 java NullpointerException”。每次我在设备上启动应用程序并点击退出按钮时,它都会崩溃。我正在观看的教程并没有发生,所以我想知道我做错了什么。任何意见将不胜感激。

DatabaseReference femaleDb = FirebaseDatabase.getInstance().getReference().child("Users").child("Female");
femaleDb.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
if(dataSnapshot.getKey().equals(user.getUid())){
userSex = "Female";
oppositeUserSex = "Male";
getOppositeSexUsers();
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}

public void getOppositeSexUsers(){
DatabaseReference oppositeSexDb = FirebaseDatabase.getInstance().getReference().child("Users").child(oppositeUserSex);
oppositeSexDb.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
if(dataSnapshot.exists() && !dataSnapshot.child("connections").child("nope").hasChild(currentUId) && !dataSnapshot.child("connections").child("yes").hasChild(currentUId)){

cards item = new cards(dataSnapshot.getKey(), dataSnapshot.child("name").getValue().toString());
rowItems.add(item);
arrayAdapter.notifyDataSetChanged();
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

错误:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.e.tinderclone, PID: 4030 java.lang.NullPointerException: Attempt to invoke interface method 'int java.lang.CharSequence.length()' on a null object reference

最佳答案

正如您在 docs 中看到的那样,getKey 可能会变为 null,从而导致您的应用程序崩溃,因为无法在 null 上调用 equals

您可以简单地为可能变为 null 的对象引入变量(请参阅警告),并在使用它们之前确保它们不为 null。这是一个基本示例:

public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String key = dataSnapshot.getKey(); // introduce variable
if (key != null && key.equals(user.getUid())){ // check for null before usage
userSex = "Female";
oppositeUserSex = "Male";
getOppositeSexUsers();
}
}

关于java - 方法调用 equals 可能会产生 java NullpointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57926822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com