【问题标题】:retrieve data from firebase to textview returns null how to fix?从firebase检索数据到textview返回null如何解决?
【发布时间】:2020-02-02 22:39:54
【问题描述】:

我正在尝试将数据从 firebase 检索到 texview,但它返回 null,我想知道如何仅根据已连接用户的 uid 检索相应的数据。 我今天整个下午都尝试了不同的方式,但没有成功,有人可以帮助我。我也研究并尝试了所有的 stackoverflow 和互联网解决方案。 我只需要检索相应连接用户结构的“名称”字段。 难道我做错了什么? 欢迎任何帮助。 我只需要检索相应连接用户结构的“名称”字段。

主活动代码

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;
    }
}

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    改变这个:

    
            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 作为引用,然后迭代以获取nameemail


    如果您使用 firebase 身份验证,另一种方法是检索当前用户 ID,从而删除迭代。

    【讨论】:

    • 您好,感谢您的回复。同样的问题 return null :/
    • 工作,谢谢你是最好的
    • 你好,你能告诉我使用firebase auth会是什么样子吗?因为我使用的是 Firebase 身份验证,所以很抱歉打扰您。
    • 如果你能帮助我,我想得到登录用户的字段“名称”,因为我能做什么?如果你能帮助我,我将不胜感激。我使用 firebase 身份验证电子邮件/密码
    • @GET Firebase Auth 是用户登录时的身份验证。 Firebase 实时数据库是我们可以存储有关特定用户的额外信息的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多