Чтение определенного дочернего значения из базы данных Firebase - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь получить значение (номер телефона) для ребенка из моей базы данных 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();
    }
}

Чтение дочернего значения из базы данных

Я хочу, чтобы значение "2327272" отображалось в телефоне textview в моем приложении. Однако, когда я нажимаю кнопку, выдается сообщение об ошибке, описанное выше, и приложение вылетает.

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Ваш DatabaseReference databaseReference; не инициализирован

Сделай это

DatabaseReference databaseReference; 
databaseReference = FirebaseDatabase.getInstance().getReference();
databaseReference.child("users").child("userID").child("phone").addListenerForSingleValueEvent...
0 голосов
/ 29 июня 2019

Вы можете попробовать этот метод:

 @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
      }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...