Android фрагменты возвратных переходов с использованием общих элементов с навигацией Jetpack - PullRequest
0 голосов
/ 20 апреля 2020

Я переносил свое приложение на компонент навигации 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()

1 Ответ

0 голосов
/ 21 апреля 2020

В моем случае не удалось оживить обратный переход, потому что Glide загружал изображение во фрагмент, к которому я возвращался.

Я добавил слушателя, как рекомендовано в этом ответе и это решило проблему.

Я проголосую, чтобы закрыть этот вопрос как дубликат, поскольку, хотя я сначала не осознавал, что это была проблема, решение остается тем же.

...