You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库数据无法显示在TextView的问题排查求助

问题解决:Firebase实时数据库无法读取用户数据填充TextView

核心错误分析

你的代码中重复嵌套了用户ID节点:

referinta = FirebaseDatabase.getInstance("https://rezervarebileteveniment-default-rtdb.europe-west1.firebasedatabase.app")
                .getReference("Users").child(userID);
// 此处已定位到Users/userID节点,后续又额外调用child(userID),导致路径错误
referinta.child(userID).addListenerForSingleValueEvent(...)

错误路径会变成Users/userID/userID,但你的数据库结构是Users节点下直接存放用户ID对应的用户数据,因此无法找到目标数据,导致TextView无法被填充。

修正后的关键代码

修改ProfilUser类中的数据库监听逻辑,移除多余的child(userID):

// 直接对已定位到用户节点的referinta添加监听
referinta.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot snapshot) {
        User profilUser = snapshot.getValue(User.class);

        if(profilUser != null){
            String nume = profilUser.nume;
            String prenume = profilUser.prenume;
            String email = profilUser.email;
            String varsta = profilUser.varsta;

            bunVenitTextView.setText("Buna ziua, "+nume + " "+prenume +"!");
            numeTextView.setText(nume);
            prenumeTextView.setText(prenume);
            emailTextView.setText(email);
            varstaTextView.setText(varsta);
        } else {
            // 增加空数据提示,辅助调试
            Toast.makeText(ProfilUser.this,"未找到用户数据", Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError error) {
        // 显示具体错误信息,便于排查
        Toast.makeText(ProfilUser.this,"加载失败:"+error.getMessage(), Toast.LENGTH_LONG).show();
    }
});

额外排查点

  1. 数据库规则配置:确保规则允许认证用户读取自身数据,示例规则:
{
  "rules": {
    "Users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}
  1. 字段一致性验证:确认数据库字段名(nume、prenume、varsta、email)与User实体类的公共字段名完全一致(大小写敏感)。
  2. 登录状态校验:添加用户登录状态判断,避免空指针异常:
user = FirebaseAuth.getInstance().getCurrentUser();
if(user == null) {
    startActivity(new Intent(ProfilUser.this, MainActivity.class));
    finish();
    return;
}
userID = user.getUid();

内容的提问来源于stack exchange,提问作者Alexandru Octavian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:06:23