我有一个'if'语句,用于检查空指针异常,但是该行本身给出了空指针异常

时间:2018-06-30 08:38:11

标签: 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("Quote").getValue().toString()!=null) {
                    Email.setText(dataSnapshot.child("Quote").getValue().toString());
                } else {
                    Email.setText("Quote not found");
                }

if语句所在的行本身显示错误。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

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

您没有检查其前面的任何值。

dataSnapshot可以为空。
dataSnapshot.child("Email")可以为空。
dataSnapshot.child("Email").getValue()可以为空。

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

这是用Java做到这一点的唯一方法。

答案 1 :(得分:0)

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

}

在if之前安装断点并对其进行调试。我认为dataSnapshot为null或dataSnapshot.child("Email")为null导致错误。

答案 2 :(得分:0)

这里是您如何重写它:

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

您必须检查所有可能性。