【发布时间】:2019-12-19 20:17:03
【问题描述】:
我有一个 Fragment 更新 Firestore 中的一个字段,然后在更新后打开下一个 Fragment。更新后的数据应该显示在两个 TextView 中,但目前我用来从 Firestore 检索日期的方法是加载旧数据,而不是来自之前的 Fragment 更新数据。
新的 Fragment 似乎打开太快了,所以它仍然从 Firestore 读取旧数据,我该如何实现它检索更新的数据?
我已经尝试在 onViewCreated 和 onStart 方法中调用 Fragment 2 中的方法,但它也在那里获取旧数据:
这是我的第一个 Fragment,它在打开下一个 Fragment 之前更新 Firestore 中的字段:(我在 onClickmethod 中调用下面的方法)
...
gamesRef.document(gameId).update(currentUserUid, pointsPlayer1Str)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
((GameActivity) getActivity()).setViewPager(7);
}
});
...
我尝试在onCreateView 中检索第二个Fragment 中的更新数据:
...
gameRef.document(gameId).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
pointsPlayer1Str = document.getString(currentUserUid);
pointsPlayer2Str = document.getString(uidPlayer2);
textViewPointsCurrentUser.setText(pointsPlayer1Str);
textViewPointsOpponent.setText(pointsPlayer2Str);
}
}
}
});
...
我应该在哪里调用第二个片段的方法来获取更新的数据?
非常感谢任何帮助!
【问题讨论】:
-
您能发布您的视图寻呼机配置吗?
-
或者,您可以使用
addSnapshotListener将实时侦听器附加到您的数据。见firebase.google.com/docs/firestore/query-data/listen -
@Christilyn 谢谢你的提示,这对我有用。当您将其发布为答案时,我可以接受它
-
很高兴我能帮上忙。我已经编辑了我的帖子以获得正确答案。
标签: android firebase android-fragments google-cloud-firestore