У меня есть фрагмент с фотографиями переработчика (профиль пользователя с галереей).
Я заполняю утилизацию в onViewCreated
, и моя функция вызывает adapter.clear()
перед прослушиванием данных. Я пытаюсь очистить дважды на самом деле.
Я добавляю фрагмент в supportFragmentManager и, когда нажимается кнопка «Назад», извлекает задний стек.
Проблема в том, что, хотя я выталкиваю стек (который, по моему мнению, должен удалить фрагмент и полностью уничтожить его), когда я повторно добавляю фрагмент и захожу в профиль того же пользователя, галерея теперь есть двойные фотографии. Если я сделаю это снова, это будет втрое.
Это моя функция:
private fun listenToImagesFromRoll() {
galleryRollAdapter.clear()
val ref = FirebaseDatabase.getInstance().getReference("/users/${userProfile.uid}/images")
ref.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(p0: DataSnapshot) {
for (imagePath in p0.children){
val imageObjectPath =
FirebaseDatabase.getInstance().getReference("/images/${imagePath.key}/body")
imageObjectPath.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
}
override fun onDataChange(p0: DataSnapshot) {
val imageObject = p0.getValue(Images::class.java)
if (imageObject != null) {
imageList.add(FeedImage(imageObject, 1))
galleryRollAdapter.clear()
galleryRollAdapter.addAll(imageList.reversed())
}
}
})
}
}
override fun onCancelled(p0: DatabaseError) {
}
})
}
Я вызываю это внутри в методе создания, внутри Observer
, который удерживает пользователя, какой профиль я открываю.
Вот как я добавляю фрагмент:
activity.subFm.beginTransaction()
.add(R.id.feed_subcontents_frame_container, activity.profileSecondRandomUserFragment, "profileSecondRandomUserFragment").addToBackStack("profileSecondRandomUserFragment")
.commit()
И вот как я это выскакиваю:
subFm.popBackStack("profileSecondRandomUserFragment", FragmentManager.POP_BACK_STACK_INCLUSIVE)
Не могу понять, почему он продолжает добавлять фотографии.