Почему фрагмент останавливает поток после перемещения в фрагмент B?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему фрагмент останавливает поток после перемещения в фрагмент B?

Сообщение Anonymous »

У меня есть навигационный график: 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»