Как извлечь значения из текущего подписанного в User Firebase, Android - PullRequest
0 голосов
/ 30 сентября 2019

Я не могу получить ни одно из значений из моего снимка. Я перепробовал несколько методов и техник, но ему дано нулевое значение.

enter image description here

Изображение моей базы данных выше. Пожалуйста, смотрите мой код ниже, пытаясь записать значение, все кажется правильным, но не работает.

email = view.findViewById(R.id.email);
editTextfragmentF = view.findViewById(R.id.editText_firstname);
editTextfragmentL = view.findViewById(R.id.editText_lastname);

    FirebaseAuth mAuth = FirebaseAuth.getInstance();
    String UserID = mAuth.getCurrentUser().getUid();

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    database.getReference().child("Users").child(UserID).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            if (mAuth.getCurrentUser() != null) {
                email.setText(mAuth.getCurrentUser().getEmail());

                //Gets current users first name
                String FN = String.valueOf(dataSnapshot.child("firstName").getValue());
                Log.i("First Name", FN);

                /*String LN = dataSnapshot.child("lastName").getValue().toString();
                Log.i("Last Name", LN);*/
                /*editTextfragmentF.setText(FN);
                editTextfragmentF.requestFocus();*/

                /*editTextfragmentL.setText(LN);
                editTextfragmentL.requestFocus();*/
            }
        }

Результат:

enter image description here

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

getValue () принимает тип возвращаемого объекта. В вашем случае вы получаете строковое значение, поэтому просто передайте String.class в метод, а затем сохраните его в строковую переменную.

String firstname=dataSnapshot.getValue(String.class);
Log.i("First Name", firstname);
1 голос
/ 30 сентября 2019

вам нужно изменить

database.getReference().child("Users").child(UserID).addChildEventListener

на

    database.getReference().child("Users").child(UserID).addValueEventListener(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {
        email.setText(dataSnapshot.child("email").getValue(String.class));
        String FN = dataSnapshot.child("firstName").getValue(String.class);
        Log.i("First Name", FN);
      }

      @Override
      public void onCancelled(DatabaseError databaseError) {
        System.out.println("The read failed: " + databaseError.getCode());
      }
    });

Убедитесь, что вы предоставили доступ в Интернет в вашем AndroidManifest.xml

<manifest xlmns:android...>
 ...
 <uses-permission android:name="android.permission.INTERNET" />
 <application ...
</manifest>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...