【发布时间】:2018-03-20 17:04:32
【问题描述】:
我正在尝试将存储在 Firebase Cloud Firestore 中的文档获取到我的自定义对象(动物)。我需要将此对象传递给另一个活动。我使用了intent.putextra("class name", obj) 函数,但我无法访问我为获取文档而创建的对象。这是我的代码:
public void start(View view){
String id;
EditText animalIdEditText = findViewById(R.id.animalIDsearch);
String animalId = animalIdEditText.getText().toString();
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference docRef = db.collection("Animals").document(animalId);
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
Animal animal = documentSnapshot.toObject(Animal.class); // this is where I create animal object. It doesn't let me declare it above either.
}
});
Intent intent = new Intent(this, searchActivity.class);
intent.putExtra("Animal",animal); // error in this line : animal can't be resolved
startActivity(intent);
}
【问题讨论】:
-
Firebase API 是异步的,在访问数据时会立即返回。您需要为此设计,仅在回调中使用获取的数据。 medium.com/google-developers/…
-
@asls2 你成功了吗?
-
是的,谢谢你的帮助。
-
@asls2 我知道你是个初学者。认为像您这样的未来访问者会访问这篇文章,他们会认为将对象传递给方法将解决
onSuccess()方法的异步行为,但它不会...... -
@asls2 感谢您做正确的事。
标签: java android firebase android-intent google-cloud-firestore