这是我的firebase结构 Fire Base Structure
我正在尝试从firebase获取电话值,但它正在提供空值。
java.lang.NullPointerException:尝试在空对象引用上调用虚方法'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)'
//getting user id value
SharedPreferences settings = getSharedPreferences("myapp", MODE_PRIVATE);
// Reading from SharedPreferences
String uid = settings.getString("uid", "");
userId = uid;
mFirebaseDatabase.child("users").child(userId).child("phone").addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
phone = dataSnapshot.getValue(String.class);
Log.d(TAG, "Value is: " +phone);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", error.toException());
}
});
textview.setText(phone);
请给出一些建议,我不知道为什么它会返回null 感谢
答案 0 :(得分:0)
您的错误在这里:
string uid = settings.getString("uid","")
您正在使用随机键推送值,而您的代码无法找到该键,这就是为什么它会给null
解决方案: 在将值推入数据库而不是推入的代码中,只需使用
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(your value model class variable)
现在,在获取代码中,只需将uid
替换为
FirebaseAuth.getInstance().getCurrentUser().getUid()