从Firebase数据库读取特定的子值

时间:2019-06-26 22:50:30

标签: android firebase firebase-realtime-database

我正在尝试从我的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”。但是,当我单击按钮时,它给出了上面共享的错误,并且应用程序崩溃了。

2 个答案:

答案 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
      }
      }