【发布时间】:2017-06-21 23:13:29
【问题描述】:
任何人都可以帮助为每个新的经过身份验证的用户创建预定义的 Firebase 数据库,基本上我希望应用程序为每个新的 uid 创建具有预定义值的数据库。 我只需要在应用程序的第一次运行时发生一次。
我的应用程序现在正在使用我已经结构化的数据库运行而没有问题...但是在我尝试让我的应用程序而不是我创建该数据库之后,我开始收到 Null 异常。
这是代码的一部分,在我第一次运行应用程序之后以及在谷歌登录消息出现或发生身份验证之前,我得到错误的部分,应用程序开始阅读以下部分并接收 NULL。
BluetoothStat.child("BluetoothStat").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
String value = dataSnapshot.getValue(String.class);
bluetoothStatus.setText(value);
if (value.equals("ON")){
bConnect.setBackgroundResource(R.drawable.bluetooth_on);
bluetoothBStatus = true;
}
else if (value.equals("OFF")){
bConnect.setBackgroundResource(R.drawable.bluetooth_off);
bluetoothBStatus = false;
}
}
这是我试图为我的应用程序预定义为数据库的内容
userUID = firebaseUser.getUid();
Engine = myRef.child("Users").child(userUID).child("Engine");
EngineStat = myRef.child("Users").child(userUID).child("EngineStat");
Bluetooth = myRef.child("Users").child(userUID).child("Bluetooth");
BluetoothStat = myRef.child("Users").child(userUID).child("BluetoothStat");
Doors = myRef.child("Users").child(userUID).child("Doors");
DoorsStat = myRef.child("Users").child(userUID).child("DoorsStat");
HeadLights = myRef.child("Users").child(userUID).child("HeadLights");
HeadLightsStat = myRef.child("Users").child(userUID).child("HeadLightsStat");
AutoLights = myRef.child("Users").child(userUID).child("AutoLights");
AutoLightsStat = myRef.child("Users").child(userUID).child("AutoLightsStat");
SystemStat = myRef.child("Users").child(userUID).child("SystemStat");
KeyLess = myRef.child("Users").child(userUID).child("KeyLess");
ApplicationStat = myRef.child("Users").child(userUID).child("ApplicationStat");
ScreenMode = myRef.child("Users").child(userUID).child("ScreenMode");
InternetStat = myRef.child("Users").child(userUID).child("InternetStat");
Application= myRef.child("Users").child(userUID).child("Application");
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ramir.carhandcontroller, PID: 14759
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ramir.carhandcontroller/com.example.ramir.carhandcontroller.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access$1100(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)' on a null object reference
at com.example.ramir.carhandcontroller.MainActivity.onCreate(MainActivity.java:165)
at android.app.Activity.performCreate(Activity.java:6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
at android.app.ActivityThread.access$1100(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
【问题讨论】:
-
你能告诉我
BluetoothStat的值吗?你在 MainActivity.java 的第 165 行有什么?
标签: android database firebase firebase-realtime-database firebase-authentication