Android Studio 开发中无法从Firebase获取数据问题咨询
问题排查结果
布局加载逻辑错误(首要原因)
你在onCreateView中执行了两次布局加载:- 通过ViewBinding生成绑定实例
binding = FragmentUserprofileBinding.inflate(inflater, container, false) - 手动inflate了一个独立的布局实例
View view = inflater.inflate(R.layout.fragment_userprofile, container, false)
最终返回的是手动inflate的view,所有通过binding对控件的赋值操作都作用在未加载到界面的binding布局上,即便获取到数据也无法显示在当前页面。
修复方案:删除手动inflate的代码行,最终返回binding.getRoot()即可。
- 通过ViewBinding生成绑定实例
FirebaseAuth未初始化
你声明了FirebaseAuth firebaseAuth;但未初始化,点击退出登录按钮时会触发空指针崩溃,需要在onCreateView中添加初始化代码firebaseAuth = FirebaseAuth.getInstance();。查询节点硬编码,未使用动态手机号
你已经通过String x= phoneNoClass.getMobileNoOfDoctor();获取了当前登录医生的手机号,但查询时硬编码写死了节点.child("+919937336406"),如果当前医生手机号不是该值,会查询不到对应节点数据。
修复方案:将查询节点改为.child(x)。成功回调逻辑冗余
当task.isSuccessful()为true时,task.getException()返回值为null,Toast中拼接该值没有实际意义,可直接移除。需验证的配置项
- 确认项目app模块下正确放置了Firebase控制台下载的
google-services.json文件 - 检查Firebase Realtime Database的读写规则是否开放了读取权限,测试阶段可临时使用以下规则:
- 确认项目app模块下正确放置了Firebase控制台下载的
{ "rules": { ".read": true, ".write": true } }
- 确认
AndroidManifest.xml中添加了网络权限:
<uses-permission android:name="android.permission.INTERNET" />
- 检查Firebase数据库中确实存在
DoctorData/[手机号]/name的层级结构,节点名称大小写完全匹配。
内容的提问来源于stack exchange,提问作者Arya Prakash
相关产品推荐
相关产品推荐

