因此我了解由于以下警告,我的代码指向错误的位置存在问题:
方法调用“ toString”可能会产生“ NullPointerException”
我不明白的是为什么它只显示在第一条日志消息上而不显示在第二条日志消息上。
我使用if语句进行检查,并且警告不再显示在字符串上,而是显示在if语句中,但是第二个字符串仍然有效。但是他们是同一回事!
DatabaseReference textUsers = FirebaseDatabase.getInstance().getReference().child("users");
textUsers.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
for(DataSnapshot data:dataSnapshot.getChildren()) {
if(data.getValue().toString().equals(setUsername)) {
Log.i("emptyNameCheck", "No users so name can be saved.");
}
String onename = data.getValue().toString();
String check = data.getValue().toString();
Log.i("dataStrings", "this won't work but WHY" + name + ": " + onename);
Log.i("datasSNoidea", "WHY DOES THIS WORK? " + name + ": " + check);
}
}
}
Logcat仅显示第二条日志消息,而不显示第一条日志消息。
I / datasSNoidea:为什么要这样做?名称:红色
我的数据库如下所示: 使用者 ---> idNumber ---->名称:“紫色”
我觉得很奇怪,它仍然会打印出名称,并遍历第二个字符串的列表,而不是第一个字符串。即使使用if语句时,if语句也只有错误,没有字符串。 第一个字符串在Logcat中什么也不显示,但是第二个字符串按预期工作。即使两个字符串都没有错误。
我不明白为什么要遍历列表并在第二个日志中按预期方式工作?例如,它将按预期打印“紫色”,“米色”,“棕色”。但是,第一个和第二个Log上都没有错误,因为我使用了显示NullPointerException错误的if语句。但是由于某种原因,它只能在第二个日志中使用。