У меня есть навигационный график: ListFragment -> Detailsheet -> editorFragment . Когда пользователь нажимает обратно из EditorFragment , навигационный компонент (NavController) появляется в ListFragment , пропуская лишн Detailship , который является нижним letsheetdialogfragment , потому что он реализует PloatingWindow интерфейс, в соответствии с ответом. В результате такой листовой фрагмент не добавляйте в задний стек навигации. >, и когда пользователь возвращается в ListFragment , он получает подробную информацию о ранее открывшемся Defitablesheph , что позволяет им снова открыть его. Все сработало, как и ожидалось до сегодняшнего дня.// ViewModel
private val _forceOpenDetailEvent = MutableSharedFlow(0, 1, BufferOverflow.DROP_OLDEST)
val forceOpenDetailEvent = _forceOpenDetailEvent.asSharedFlow()
< /code>
// ListFragment
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// ...
repeatOnStartedLatest(viewModel.forceOpenDetailEvent) {
navigateToDetail(it)
}
}
fun Fragment.repeatOnStartedLatest(flow: Flow, block: suspend (T) -> Unit) {
repeatOnLifecycleLatest(Lifecycle.State.STARTED, flow, block)
}
private fun Fragment.repeatOnLifecycleLatest(state: Lifecycle.State, flow: Flow, block: suspend (T) -> Unit) {
// https://stackoverflow.com/a/67422183/5894542
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(state) {
flow.collectLatest {
block(it)
}
}
}
}
< /code>
Сегодня я обновил Android Studio, Gradle и Gradle и зависимости от новых версий. Проблема произошла с ListFragment . Он перестал собирать ForseoPendetAileVents . Похоже, что новые версии исправили некоторые ошибки или добавлены новое поведение, и теперь ListFragment разрушает и воссоздает, когда пользователь отступает. ViewModel продолжает излучать правильные элементы, но коллекционер сломан. Но в таком случае это запустит открытие деталей в неподходящих ситуациях (вращение, экрана -> экран включен). < /P>
Какие изменения по сравнению с предыдущими версиями зависимостей, которые вызывают тот же код, чтобы прекратить работать, как и ожидалось? Код работает правильно почти два года. < /P>
// target sdk 35
implementation "androidx.activity:activity-ktx:1.10.0"
implementation "androidx.fragment:fragment-ktx:1.8.5"
implementation "androidx.navigation:navigation-fragment-ktx:2.8.5"
implementation "androidx.navigation:navigation-ui-ktx:2.8.5"
implementation "androidx.appcompat:appcompat:1.7.0"
< /code>
// target sdk 34
implementation "androidx.activity:activity-ktx:1.9.2"
implementation "androidx.fragment:fragment-ktx:1.8.3"
implementation "androidx.navigation:navigation-fragment-ktx:2.8.1"
implementation "androidx.navigation:navigation-ui-ktx:2.8.1"
implementation "androidx.appcompat:appcompat:1.6.1"
Подробнее здесь: https://stackoverflow.com/questions/793 ... fragment-b
Почему фрагмент останавливает поток после перемещения в фрагмент B? ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Нажатие кнопки «Назад» в Android Leanback не останавливает фрагмент видео
Anonymous » » в форуме JAVA - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Нажатие кнопки «Назад» в Android Leanback не останавливает фрагмент видео
Anonymous » » в форуме Android - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Нажатие кнопки «Назад» в Android Leanback не останавливает фрагмент видео
Anonymous » » в форуме JAVA - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Нажатие кнопки «Назад» в Android Leanback не останавливает фрагмент видео
Anonymous » » в форуме Android - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-