【发布时间】:2019-10-13 09:53:38
【问题描述】:
我是 FireBase 数据库的初学者。我编写了这段代码用于在身份验证后检索用户数据。身份验证部分运行良好,但数据检索部分导致我的应用程序因此错误而崩溃。
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String java.lang.Object.toString()”
在 com.kcw.firebasebasics.UserInterface$1.onDataChange(UserInterface.java:58)
在 com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@17.0.0:75)
在 com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@17.0.0:63)
在 com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@17.0.0:55)
在 android.os.Handler.handleCallback(Handler.java:739)
在 android.os.Handler.dispatchMessage(Handler.java:95)
这是我写的代码,我在第 58 行(导致错误的行)写了一个注释来识别它。
FirebaseUser firebaseUser;
DatabaseReference reference;
TextView greeting;
String name,text;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_interface);
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference()
.child(firebaseUser.getUid());
greeting = findViewById(R.id.greet_msg);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String text = dataSnapshot.getValue().toString();//line 58
try {
JSONObject object = new JSONObject(text);
name = object.getString("username");
} catch (JSONException e) {
e.printStackTrace();
}
String message = "WELCOME ";
message = message + name.toUpperCase();
greeting.setText(message);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
帮我解决这个问题。
我验证了我的数据库中是否有任何空对象,但我没有找到。
我也尝试将我的所有字符串变量设为全局变量,但这也不起作用
最后是注册用户后我的数据库的图片。
【问题讨论】:
-
您好。在
DatabaseReference对象上,您不必在.child(firebaseUser.getUid())之前调用.child("users")吗? -
是的,我刚刚意识到并修复了它。谢谢你
标签: android firebase firebase-realtime-database nullpointerexception