получить данные из firebase в textview возвращает null, как это исправить? - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь извлечь данные из firebase в texview, но он возвращает ноль, и мне было интересно, как я могу получить соответствующие данные на основе uid только подключенного пользователя. Сегодня я пробовал разные способы, но безуспешно, кто-то мог мне помочь. Я исследовал и перепробовал все решения stackoverflow и inte rnet. Мне нужно получить только поле «имя» структуры соответствующего подключенного пользователя. Я делаю что-то неправильно? любая помощь приветствуется. Мне нужно получить только поле «имя» структуры соответствующего подключенного пользователя.

MainActivity Code

public class MainActivity extends AppCompatActivity {
    private FirebaseAuth mAuth;
    Button btn_send;
    EditText et_contact, et_message;
    TextView textView52;
    private FirebaseAuth auth;
    private User usuario = new User();
    private DatabaseReference firebaseDatabase;
    private ValueEventListener valueEventListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mAuth = FirebaseAuth.getInstance();



        btn_send = (Button)findViewById(R.id.btn_send);
        et_contact = (EditText)findViewById(R.id.et_contact);
        et_message = (EditText)findViewById(R.id.et_message);
        textView52 = (TextView)findViewById(R.id.textView52);


        PermissionToConnect();

        btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String number = et_contact.getText().toString();
                String message = et_message.getText().toString();

                try{
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(number, null, message, null, null);
                    Toast.makeText(MainActivity.this, "Sent", Toast.LENGTH_SHORT).show();
                }catch (Exception e){
                    Toast.makeText(MainActivity.this, "Sending Failed", Toast.LENGTH_SHORT).show();
                }

            }
        });

        DatabaseReference databaseRef= FirebaseDatabase.getInstance()
                .getReference();

        databaseRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                String data = dataSnapshot.child("Users").child("email").child("name").getValue(String.class);
                textView52.setText(data);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

- код класса пользователя

User Class

public class User {
    public String name, email, phone;

    public User(){

    }

    public User(String name, String email, String phone) {
        this.name = name;
        this.email = email;
        this.phone = phone;
    }
}

enter image description here

1 Ответ

1 голос
/ 03 февраля 2020

Измените это:


        databaseRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                String data = dataSnapshot.child("Users").child("email").child("name").getValue(String.class);
                textView52.setText(data);
            }

На это:


        databaseRef.child("Users").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
             for(DataSnapshot ds : dataSnapshot.getChildren()){
                String data = ds.child("name").getValue(String.class);
                textView52.setText(data);
            }
         } 

Вам необходимо добавить Users в качестве ссылки, а затем выполнить итерацию, чтобы получить name или email .


Другой способ, если вы используете firebase auth, - это получить текущий идентификатор пользователя, тем самым удалив итерацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...