Java 我有一个';如果';用于检查空指针异常的语句,但该行本身给出了空指针异常

Java 我有一个';如果';用于检查空指针异常的语句,但该行本身给出了空指针异常,java,android,database,firebase,nullpointerexception,Java,Android,Database,Firebase,Nullpointerexception,代码 if (dataSnapshot.child("Email").getValue().toString()==null) { Email.setText("Email not found"); } else { Email.setText(dataSnapshot.child("Email").getValue().toString()); }

代码

if (dataSnapshot.child("Email").getValue().toString()==null) {
                    Email.setText("Email not found");
                } else {
                    Email.setText(dataSnapshot.child("Email").getValue().toString());
                }

                if (dataSnapshot.child("Quote").getValue().toString()!=null) {
                    Email.setText(dataSnapshot.child("Quote").getValue().toString());
                } else {
                    Email.setText("Quote not found");
                }

if
语句的行本身显示错误。如何解决此问题?

您正在检查
toString()
值是否为空。只有那个值

您没有检查它前面的任何值

dataSnapshot
可以为空。
dataSnapshot.child(“电子邮件”)
可以为空。
dataSnapshot.child(“电子邮件”).getValue()
可以为空

获取每个值,将其保存到变量中,并对所有这些值执行空检查

这是用Java实现的唯一方法

if (dataSnapshot.child("Email").getValue().toString()==null) {

}

在if之前安装断点并进行调试。我认为
dataSnapshot
为空,或者
dataSnapshot.child(“Email”)
为空,这会导致错误。

以下是重写它的方法:

if(dataSnapshot != null && dataSnapshot.hasChild("Email") && dataSnapshot.child("Email").getValue() != null ){
    //Your code...
}

您必须检查所有可能性。

可能是您的dataSnapshot为null,或者dataSnapshot.child(“电子邮件”).getValue()返回null值。这并不好笑。你没有考虑所有可能的情况。阅读上面的评论。你能把你的
LogCat
放在哪里吗?因为在您的
if
语句中,有许多部分可以抛出
nullpointerException
No i checked。。。这不是我说的废话。百分之百肯定。如果发生崩溃,请发布实际异常。否则你会让我们永远猜不透,而得不到任何帮助。你刚刚接受了一个回答,回答完全符合我说的,我的“胡说八道”是正确的。这只是一个逻辑人。。。我是说我告诉自己数据库是空的。。。它的值在数据库中为空。你能在问题中添加你的dataSnapshot值吗