我正在尝试从我的Firebase实时数据库中检索孩子的值(电话号码)。但是,它给了我以下错误:
尝试调用虚拟方法 'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)' 在空对象引用上
我的数据库结构如下:
contactsfirebase-16ade
users
-LiKtfTuDQm7LmY49t69
email: "devsingh0@gmail.com"
name: "dev"
phone: "2327272"
代码
DatabaseReference databaseReference;
databaseReference.child("users").child("userID").child("phone").addListenerForSingleValueEvent(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
String phone = dataSnapshot.getValue().toString();
Phone.setText(phone);
Phone.getDisplay();
}
}
Read child value from firebase
我希望在我的应用程序的textview手机中显示值“ 2327272”。但是,当我单击按钮时,它给出了上面共享的错误,并且应用程序崩溃了。
答案 0 :(得分:1)
您的DatabaseReference databaseReference;
未初始化
这样做
DatabaseReference databaseReference;
databaseReference = FirebaseDatabase.getInstance().getReference();
databaseReference.child("users").child("userID").child("phone").addListenerForSingleValueEvent...
答案 1 :(得分:0)
您可以尝试此方法:
@Override
protected void onStart() {
super.onStart();
final DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
//if you retrive the Uid inside of oncreate method you can call it else you have to retrive the Uid
DatabaseReference veera = rootRef.child("users").child(FirebaseAuth.getInstance().getCurrentUser().getUid();
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child("phone").exits()){
String phone = dataSnapshot.getValue().toString();
Phone.setText(phone);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
veera.addValueEventListener(eventListener);
}
如果要在按钮下进行操作,只需将其移至公共方法并在onclicklistener内调用该方法即可。
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//here
}
}