“我正在设置地图活动,我可以在实时数据库火灾库中获取更新的位置,而不能在火灾库中显示位置。当我登录我的应用程序时,驱动程序地图活动就会打开,并且应用程序崩溃。我看到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)
答案 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();
}