java.lang.NullPointerException:尝试调用虚拟方法';java.lang.String com.example.app.users.getEmail()';关于空对象引用

java.lang.NullPointerException:尝试调用虚拟方法';java.lang.String com.example.app.users.getEmail()';关于空对象引用,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,几个小时前,我在firebase数据库中添加了更多表。之后,应用程序在读取值时崩溃 从Firebase获取的值很好,但应用程序在此崩溃 请在下面找到数据库的日志和屏幕截图 2020-01-21 20:44:44.652 1499-1499/com.example.app D/AndroidRuntime: Shutting down VM 2020-01-21 20:44:44.654 1499-1499/com.example.app E/AndroidRuntime: FATAL EXCEP

几个小时前,我在firebase数据库中添加了更多表。之后,应用程序在读取值时崩溃 从Firebase获取的值很好,但应用程序在此崩溃

请在下面找到数据库的日志和屏幕截图

2020-01-21 20:44:44.652 1499-1499/com.example.app D/AndroidRuntime: Shutting down VM
2020-01-21 20:44:44.654 1499-1499/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.app, PID: 1499
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.app.users.getEmail()' on a null object reference
        at com.example.app.AndroidDashboardDesignActivity.showData(AndroidDashboardDesignActivity.java:232)
        at com.example.app.AndroidDashboardDesignActivity.access$000(AndroidDashboardDesignActivity.java:41)
        at com.example.app.AndroidDashboardDesignActivity$1.onDataChange(AndroidDashboardDesignActivity.java:135)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.0:75)
        at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.0:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.0:55)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7055)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:536)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
2020-01-21 20:44:44.686 1499-1499/com.sdgi.sdcmt I/Process: Sending signal. PID: 1499 SIG: 9
请检查firebase数据库的屏幕截图

代码在

com.sdgi.sdcmt.AndroidDashboardDesignActivity.showData(AndroidDashboardDesignActivity.java:232)

//            uinfo.setFullname(ds.child(userID).getValue(users.class).getFullname());//set Name
            uinfo.setEmail(ds.child(userID).getValue(users.class).getEmail());//set Email
//            uinfo.setEmail(ds.child(userID).getValue(users.class).getEmail());//set Email
//


(AndroidDashboardDesignActivity.java:41)

public class AndroidDashboardDesignActivity extends Activity implements UpdateHelper.OnUpdateCheckListener {
    private static final String TAG = "AndroidDashboardActivity";


(AndroidDashboardDesignActivity.java:135)


        myref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                showData(dataSnapshot);
            }
我补充说

Log.d(TAG, "datashot:  " + ds.toString()); 
在我的代码中。显示数据正在正确获取-


2020-01-21 20:44:44.650 1499-1499/com.example.app D/androidDashboard活动:datashot:DataSnapshot{key=3yxbv4pe42gvmwur0xxxxxxxxxxx,value={zipcode=123456,country=mycountry,newuser=no,password=12345678,address=myaddress,gender=Male,city=mycity,mobile=1234567890,rollno=1234567890,fullname=ahjsj,email=mail2@mail.com} }

问题在于代码,请在错误行提供代码。正如错误所述,
com.example.app.users
为空。我建议对类使用标准命名,这是一个带有大写字母的类,因此应该是
com.example.app.Users
,但似乎更可能是指单个用户,而不是多个用户。是的,但命名没有做错任何事情,在firebase中添加表之前,它工作正常,但是我将尝试重命名该类,感谢您的快速响应
ds.child(userID)。getValue(users.class)
返回null,这意味着在您查询的数据库中的位置没有数据。请使用IDE的调试工具(断点)调试相关行(232)的实际值。我猜您正在将一个null
users
对象传递给
getValue()
,该对象反过来返回一个null
users
引用,并且您正在对null引用调用一个方法(
getEmail()
)。