首页 > 解决方案 > 在 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();

  }

在此处输入图像描述

标签: androidfirebasefirebase-realtime-database

解决方案


尝试这个...

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) {

  }
});

}

希望它可以帮助你:)


推荐阅读