如何从Firestore获取字段并更新TextView?取值一直为空该如何解决?
问题原因及排查方案
1. 首要错误:变量引用错误
你代码中定义的目标文档引用变量为docRef,但实际发起请求时调用的是未初始化的colref变量,这是导致请求异常、返回结果为null的核心原因,直接修正变量名即可:
DocumentReference docRef = dbase.collection("newsImage").document("cqmpNF45IZsHDSx9hSuq"); // 把colref改成docRef docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() { @Override public void onComplete(@NonNull @NotNull Task<DocumentSnapshot> task) { if (task.isSuccessful()) { DocumentSnapshot document = task.getResult(); if (document.exists()) { str = document.getString("imgNews"); tv.setText(str); } else { Log.d("docv", "No such document"); } } else { Log.d("docv", "get failed with ", task.getException()); } } });
2. 其他可能的排查点
如果修正变量名后依然有问题,按以下顺序排查:
- 检查项目的
google-services.json是否和当前Firebase项目匹配,Firebase初始化流程是否正常完成 - 查看Logcat中
docv标签的日志,若打印get failed with相关报错,大概率是Firestore安全规则未放行读权限,需要调整规则允许当前用户访问newsImage集合 - 核对Firestore控制台中
imgNews字段的大小写,Firestore字段名大小写敏感,拼写不一致会导致获取结果为null - 确认文档ID
cqmpNF45IZsHDSx9hSuq确实存在于newsImage集合下,没有多余空格或拼写错误
内容的提问来源于stack exchange,提问作者Avni Krtigya
相关产品推荐
相关产品推荐

