Прочитать значение firestore из документа не работает

Я хочу прочитать документ значение из пожарный склад. Но у меня это не работает, и я не знаю, в чем проблема. Следует ли использовать получать() или обновления в реальном времени. Я пробовал оба, но у меня не работает это мой код. Я подтвердил свою позицию тостом, и все в порядке.

Как решить эту проблему?

public class SingleAdActivity extends AppCompatActivity {
    String x;
    String a;
    String z;
    String coname;
    TextView Co_Name;

    private ListenerRegistration listenerRegistration;
    DocumentReference firebaseFirestore;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single_ad);
        Co_Name = findViewById(R.id.SingleAd_CoName);
        ad_discription = findViewById(R.id.disrcibe_ad);
        phone_number = findViewById(R.id.phone);
        x = getIntent().getStringExtra("single_ad_position");
        a = getIntent().getStringExtra("single_ad_categoryP");
        z = getIntent().getStringExtra("documentId");


        firebaseFirestore = FirebaseFirestore.getInstance().collection("MainCategories")
                .document(String.valueOf(a))
                .collection("Ads")
                .document(z);

        @Override
        protected void onStart () {
            super.onStart();
            listenerRegistration = firebaseFirestore
                    .addSnapshotListener(this, new EventListener<DocumentSnapshot>() {
                        @Override
                        public void
                        onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
                            if (e != null) {
                                Toast.makeText(SingleAdActivity.this, "error", Toast.LENGTH_SHORT).show();
                                return;
                            }
                            assert documentSnapshot != null;
                            if (documentSnapshot.exists()) {

                                coname = documentSnapshot.getString("CompanyName");
                                Co_Name.setText(coname);

                            } else {

                                // Co_Name.setText(a);

                            }
                        }
                    });

        }

        @Override
        protected void onStop () {
            super.onStop();
            listenerRegistration.remove();
        }
    }
}

Амр, пожалуйста, добавьте структуру своей базы данных.

Alex Mamo 04.08.2018 00:25

Приятно слышать, что вы смотрите это видео, но похоже, что это еще одна проблема. Чтобы следовать правилам этого сообщества, отправьте еще один свежий вопрос, содержащий mcve, чтобы я и другие пользователи могли вам помочь. Что касается этой проблемы, не могли бы вы добавить структуру своей базы данных?

Alex Mamo 04.08.2018 01:31

хорошо, я сделаю это как скриншот.

Amr Mahmoud 04.08.2018 01:38

Это хорошо. Пожалуйста, сообщите мне, когда вы добавите.

Alex Mamo 04.08.2018 10:14
0
4
67
1

Ответы 1

Я делаю это так:

FirebaseFirestore firestoreDb = FirebaseFirestore.getInstance();
firestoreDb..collection(yourCollection)
                .document(yourDocument)
                .get()
                .addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                        if (task.isSuccessful()) {
                            Object yourObject = task.getResult().toObject(YourClassName.class);
                        } else {
                            if (task.getException() != null)
                            {
                                task.getException().printStackTrace();
                            }

                        }
                    }
                });

Другие вопросы по теме