В Android Studio получение данных из Firebase не работает - PullRequest
0 голосов
/ 13 января 2020

При запуске приложения данные не извлекаются, но при отладке я вижу, где оно находится с точки зрения ссылки на базу данных.

Когда оно запускается и попадает в addValueEventListener, оно не go в довольно странная функция, не знаю, так ли это, потому что ее асин c или нет, но в любом случае данные из 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();

  }

enter image description here

1 Ответ

0 голосов
/ 13 января 2020

попробуйте это ...

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

  }
});

}

Надеюсь, это поможет вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...