当我进行一段时间的活动并再次返回片段时。.一切都很好,片段中的.orderBy
可以完美地下降,而.limit(5)
可以加载10张照片,可以的是10张照片。但是,直到我使用底部导航移至home fragment
,然后我再次回到profile fragment
,然后发生了什么。.orderBy
中的profile fragment
成为ASCENDING,并且无法像第一个那样仅加载5张照片。然后我尝试移至activity
,然后再次移至profile fragment
。orderBy
和.limit
运作良好,下降并完美加载10张照片(5乘5)。>
我想知道是什么问题?
就像我移到其他片段并再次返回到onStart()
时无法在profile fragment
类中调用profile fragment
一样,但是我找不到解决方案,除非移到活动了一段时间并且再次回到profile fragment
,它会在配置文件片段onStart()
方法中完美地呼唤我。 因为fragment to fragment
不能完美地调用onStart()
。和activity to fragment
会完美地调用onStart() inside fragment
。,在此之前,我很抱歉,因为实际上这不是firestore问题。听起来我不了解活动生命周期,以及如何重新启动或恢复片段,我现在仍在搜索并且没有正确的答案。仍然可以学习这篇文章。
Method to refresh Fragment content when data changed ( like recall onCreateView)
我正在从profile fragment
类的Firestore中检索10张照片,以加载到回收者视图中。和上面我提到的有问题的代码:
@Override
public void onStart() {
super.onStart();
contentList.clear();
if (firebaseAuth.getCurrentUser() != null) {
recyclerSeen.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
Boolean reachBottom = !recyclerView.canScrollVertically(-1);
if (reachBottom) {
loadMorePost();
}
}
});
// RETRIEVING ALL PHOTOS
Query firstQuery = firebaseFirestore
.orderBy("timestamp", Query.Direction.DESCENDING)
.limit(5);
firstQuery.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
if (isFirstPageFirstLoad) {
lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1); // array 0, 1, 2
}
for (DocumentChange doc : documentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
//String postId = doc.getDocument().getId();
ContentProfile contentSeen = doc.getDocument().toObject(ContentProfile.class);
/* how to store multi ArrayList */
if (isFirstPageFirstLoad) {
contentList.add(contentSeen);
} else {
contentList.add(0, contentSeen);
}
adapterSeen.notifyDataSetChanged();
}
}
isFirstPageFirstLoad = false;
}
});
}
}
public void loadMorePost() {
Query nextQuery = firebaseFirestore
.collection("ProfileDashboard")
// .document(currentUserId)
// .collection("seenBy")
.orderBy("timestamp", Query.Direction.DESCENDING)
.startAfter(lastVisible)
.limit(5);
nextQuery.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
if (!documentSnapshots.isEmpty()) {
lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1);
for (DocumentChange doc : documentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
//String postId = doc.getDocument().getId();
ContentProfile contentSeen = doc.getDocument().toObject(ContentProfile.class);
contentList.add(contentSeen);
adapterSeen.notifyDataSetChanged();
}
}
}
}
});
}