Java 字符串userID=FirebaseAuth.getInstance().getCurrentUser().getUid();(getUid给出空指针异常

Java 字符串userID=FirebaseAuth.getInstance().getCurrentUser().getUid();(getUid给出空指针异常,java,android,firebase,firebase-realtime-database,nullpointerexception,Java,Android,Firebase,Firebase Realtime Database,Nullpointerexception,“我正在设置一个映射活动,在该活动中,我在实时数据库fire base中获得更新的位置,但在fire base中不显示位置。当我登录我的应用程序时,驱动程序映射活动打开,应用程序崩溃。我看到log cat error show null pointer exception error on first line getUid() ( 168 line no) private void DisconnectTheDriver() { String userID = Fire

“我正在设置一个映射活动,在该活动中,我在实时数据库fire base中获得更新的位置,但在fire base中不显示位置。当我登录我的应用程序时,驱动程序映射活动打开,应用程序崩溃。我看到log cat error show null pointer exception

error on first line getUid() 

( 168 line  no)    
private void DisconnectTheDriver() {

    String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
    DatabaseReference DriverAvailibiltyRef = FirebaseDatabase.getInstance().getReference().child("Drivers Available");

    GeoFire geoFire = new GeoFire(DriverAvailibiltyRef);

(175 line no)        geoFire.removeLocation(userID);


}
在logcat中

 at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6942)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
    at com.example.uolbuses.DriverMapActivity.DisconnectTheDriver(DriverMapActivity.java:275)
    at com.example.uolbuses.DriverMapActivity.onStop(DriverMapActivity.java:268)
    at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1382)
    at android.app.Activity.performStop(Activity.java:7452)
    at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:4238)
    at android.app.ActivityThread.handleStopActivity(ActivityThread.java:4290) 
    at android.app.ActivityThread.-wrap25(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1730) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6942) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 

一个可能的原因可能是您正在访问一个未定义用户ID的页面。如果您的应用程序中有登录功能,那么我建议您沿着该路径,然后到达该页面

到达此页面后,使用调试器查看uid的值

我再次假设这里有很多东西,如果你能提供一些关于工作流程的更深入的见解,那将是很有帮助的

一个小的代码片段,以防您丢失此

import com.google.firebase.auth.FirebaseAuth;
...
...

if (FirebaseAuth.getInstance().getCurrentUser() == null) {
    //Go to login 
}
else{
    String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
}