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

时间:2019-06-19 18:16:58

标签: java android firebase firebase-realtime-database nullpointerexception

“我正在设置地图活动,我可以在实时数据库火灾库中获取更新的位置,而不能在火灾库中显示位置。当我登录我的应用程序时,驱动程序地图活动就会打开,并且应用程序崩溃。我看到log cat错误显示空指针异常。

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) 

1 个答案:

答案 0 :(得分:0)

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

访问此页面后,请使用调试器并查看uid的值。

再次在这里假设很多事情,如果您可以提供有关工作流的更多见解,那将会很有帮助

一些代码片段,以防您丢失此内容

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

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