Проблема с модификатором GraphicsLayer во фрагментах ViewPager2 с использованием Jetpack ComposeAndroid

Форум для тех, кто программирует под Android
Anonymous
Проблема с модификатором GraphicsLayer во фрагментах ViewPager2 с использованием Jetpack Compose

Сообщение Anonymous »

Я работаю над проектом Android, который использует ViewPager2 для размещения фрагментов, каждый из которых содержит представление с Jetpack Compose в корне. В этих представлениях Compose я применяю Modifier.graphicsLayer, который принимает лямбда-выражение в качестве параметра для выполнения переводов в представлении.
Проблема, с которой я сталкиваюсь, заключается в том, что при переключении фрагментов в ViewPager2 лямбда-функция, переданная модификатору GraphicsLayer, больше не вызывается. Это приводит к тому, что переводы не применяются должным образом, когда я возвращаюсь к фрагменту.
Вот упрощенная версия моей настройки:

Код: Выделить всё

@Composable
fun MyComposeView() {
Box(
modifier = Modifier
.fillMaxSize()
.graphicsLayer {
translationX = // some calculation
translationY = // some calculation
}
) {
// Content
}
}
В моем фрагменте:

Код: Выделить всё

class MyFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setContent {
MyComposeView()
}
}
}
}
Кто-нибудь сталкивался с подобной проблемой или знает, почему лямбда-выражение в модификаторе GraphicsLayer не вызывается после изменения фрагмента? Есть какие-нибудь предложения о том, как обеспечить, чтобы лямбда продолжала вызываться при повторном посещении фрагмента?
Заранее спасибо за вашу помощь!
Вот пример -> https://github .com/BenjaminBihr/Sample/tree/main

Подробнее здесь: https://stackoverflow.com/questions/786 ... ck-compose

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