android - 在 Android Studio 中,从 Firebase 检索数据不起作用
问题描述
运行应用程序时,不会检索数据,但在调试时,我可以看到它在数据库链接方面的位置。
当它运行并到达 addValueEventListener 时,它不会进入这个很奇怪的函数,不知道这是否是因为它的异步,但无论哪种方式,都没有检索到来自 Firebase 的数据。
public GarbageItems(int itemNum) {
String itemId = String.valueOf(itemNum);
database = FirebaseDatabase.getInstance();
gameObjectRef = database.getReference().child("gameObjects");
itemInformationGrabber(gameObjectRef, itemId);
}//GarbageItems(Constructor)
private void itemInformationGrabber(DatabaseReference gameObjectRef, String itemId) {
DatabaseReference dataReference = gameObjectRef.child(itemId);
DatabaseReference itemColor = dataReference.child("Color");
itemColor.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange( DataSnapshot dataSnapshot) {
String color = dataSnapshot.getValue(String.class);
setColor(color);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
这是在调用 GarbageItem 的不同类中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
colorTextView = findViewById(R.id.ColorTextView);
itemTextView = findViewById(R.id.ItemNameTextView);
GarbageItems garbageItems = new GarbageItems(1);
Color = garbageItems.getColor();
}
解决方案
尝试这个...
private void itemInformationGrabber(DatabaseReference gameObjectRef, String itemId) {
DatabaseReference dataReference = gameObjectRef.child(itemId);
DatabaseReference itemColor = dataReference.child("Color");
itemColor.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange( DataSnapshot dataSnapshot) {
for(Datasnapshot dataSnap : dataSnapshot.getChildren()){
String color = dataSnap.child("Color").getValue(String.class);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
希望它可以帮助你:)
推荐阅读
- c# - NHibernate 创建配置提供程序
- kubernetes - 服务选择器与部署选择器匹配标签
- linux - nginx docker, how to change the public path?
- swift - 如何获取属性值枚举?
- liferay - 更改 Liferay 7.2 条形图中的 x 标签
- javascript - 在 discord.js 机器人上添加自定义状态
- c - 我正在尝试做一个简单的结构示例,但我不明白为什么它不打印 C 中的内容
- amazon-web-services - AWS Lambda 是否在单独的 Firecracker VM 中运行每个调用?
- c++ - 使用重定向和 getline 从文本文件读取时出现问题
- geometry - 如何计算所有可能路径的最小所需边?