0

我正在尝试从我的 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();
    }
}

从 firebase 读取子值

我希望在我的应用程序的 textview Phone 中显示值“2327272”。但是,当我单击按钮时,它会给出上面共享的错误并且应用程序崩溃。

4

2 回答 2

1

DatabaseReference databaseReference; 的没有初始化

做这个

DatabaseReference databaseReference; 
databaseReference = FirebaseDatabase.getInstance().getReference();
databaseReference.child("users").child("userID").child("phone").addListenerForSingleValueEvent...
于 2019-06-27T00:15:57.697 回答
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
      }
      }
于 2019-06-29T19:10:15.170 回答