Я переносил свое приложение на компонент навигации Android Jetpack, и у меня возникают трудности с переходами общих элементов.
Атрибут transitionName
установлен для обоих фрагментов, и я запускаю навигация с использованием следующего кода (для документации по анимации ):
findNavController().navigate(
MainFragmentDirections.actionViewEvent(event.name),
FragmentNavigatorExtras(
backgroundElement to "event_card",
titleElement to "event_name"
)
)
Изначально это само по себе не работало вообще. Однако после добавления следующего кода к целевому фрагменту общие элементы были анимированы при вводе:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move)
}
Однако, все еще нет общего элемента return transition . Можно ли включить переход как на вход, так и на возврат? (Раньше у меня это работало, когда два фрагмента были отдельными действиями.)
Может быть уместно знать, что я переопределил onSupportNavigateUp
в действии, как рекомендовано документацией при использовании панель действий. Переопределенный метод ниже:
override fun onSupportNavigateUp(): Boolean =
findNavController(R.id.nav_host).navigateUp(appBarConfiguration)
|| super.onSupportNavigateUp()