SharedElementCallback :: onMapSharedElements () не влияет на переход при входе - PullRequest
0 голосов
/ 26 мая 2020

Итак, я возился с Shared Element Transition в Android.

Фрагмент карты навигации для справки:

ListFragment -> MovieFragment -> MovieFragment -> ...

Каждый MovieFragment может запускать другой MovieFragment .

Насколько я понимаю, обратный вызов от setEnterSharedElementCallback вызывается для целевого фрагмента (или в данном случае MovieFragment), а затем setExitSharedElementCallback для предыдущего / исходного фрагмента. Поэтому я предоставляю отображение для представлений в MovieFragment setEnterSharedElementCallback::onMapSharedElements().

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

Однако у меня есть случай, когда Мне нужен переход при переходе от MovieFragment к MovieFragment (для полной ясности, каждый MovieFragment содержит предложения для похожих фильмов, после щелчка я открываю mov ie в новом Fragment). Теперь для этого перехода у меня есть setExitSharedElementCallback() в MovieFragment, где я сопоставляю исходный фрагмент- Views с именами переходов.

Это тоже работает правильно. У меня есть переход от MovieFragment_1 к MovieFragment_2.

Возвратный переход с MovieFragment_2 на MovieFragment_1 работает хорошо.

Это проблема: Возвратный переход с MovieFragment_ на ListFragment не работает .


Дело в том, что я думаю, что функция SharedElement Transition не работает, причина в том, что для облегчения правильного поведения перехода от MovieFragment_1 к MovieFragment_2 и наоборот, я должен setTransitionName(null) на Просмотры, которые участвовали в последнем переходе. Если я этого не сделаю, независимо от того, какой Views я отображаю в setEnterSharedElementsCallback::onMapSharedElements(), переход не работает.

Короче говоря, когда есть Views в целевом / целевом Fragment, которые имеют имя перехода, но не часть следующего перехода, переход не происходит. Что полностью противоречит цели onMapSharedElements().

У меня есть еще один вопрос , проблема заключалась в том, что я установил android:transitionName в макете целевого фрагмента, который воспроизводил havo c на переходы и отображение, т.е. отображение не работало.

Есть ли причина для такого поведения, которого я не вижу в документации?

...