Переход фрагмента с sharedElements перестал работать на Anrdoid 9 - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть вид рециркулятора -> подробный вид потока.Имена переходов уникальны в списке и соответствуют именам переходов во фрагменте сведений.Предполагается, что два вида должны быть перемещены, а не исчезнут, как все остальное.Мои анимации работали должным образом, пока я не изменил целевой API на 26. В API 26 общие представления переходят в свое «конечное» состояние без каких-либо анимаций.Все остальное - свойство анимированное.

Я пытался следовать нескольким инструкциям, но безрезультатно.Что мне не хватает?Вот мой код:

private fun showDetails(edited: EditedAlarm) {
    fragmentManager.findFragmentById(R.id.main_fragment_container)?.lollipop {
        exitTransition = Fade()
    }

    val detailsFragment = AlarmDetailsFragment().apply {
        arguments = Bundle()
        arguments.putInt(Intents.EXTRA_ID, edited.id())
        arguments.putBoolean(Store.IS_NEW_ALARM, edited.isNew)
    }.lollipop {
        val enterSlide = Slide()

        if (edited.holder.isPresent()) {
            val viewHolder = edited.holder.get()
            enterSlide.epicenterCallback = viewHolder.epicenter()
            enterSlide.slideEdge = Gravity.TOP
        }

        enterTransition = TransitionSet().addTransition(enterSlide).addTransition(Fade())

        val move = TransitionInflater.from(this@AlarmsListActivity).inflateTransition(android.R.transition.move)
        sharedElementEnterTransition = move
        sharedElementReturnTransition = move
    }

    fragmentManager.beginTransaction()
            .lollipop {
                val viewHolder = edited.holder.get()
                addSharedElement(viewHolder.digitalClock(), viewHolder.digitalClock.transitionName)
                addSharedElement(viewHolder.container(), viewHolder.container().transitionName)
            }
            .replace(R.id.main_fragment_container, detailsFragment)
            .commitAllowingStateLoss()
}

1 Ответ

0 голосов
/ 19 июля 2019

После некоторых копаний я нашел решение:

Используйте SupportFragmentManager из библиотеки поддержки.Несмотря на то, что фрагменты не рекомендуется использовать в API версии 26, они не всегда работают.

...