从文档中读取Firestore值无效

时间:2018-08-03 19:44:16

标签: android firebase google-cloud-firestore

我想从 firestore 文档中读取一个。但这对我不起作用,我也不知道问题出在哪里。我应该使用 get()还是实时更新。 我都尝试过但是对我不起作用 这是我的代码。 我通过烤面包确认了我的立场,还可以。

如何解决这个问题?

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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我的操作方式如下:

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();
                            }

                        }
                    }
                });