#android #fragment-transitions
#Android #фрагмент-переходы
Вопрос:
Я не могу делать именно то, что хочу, с переходами к инициализации моих фрагментов:
val fragmentTransaction = fragmentManager.beginTransaction()
val fragments = fragmentManager.fragments
if (fragments.isNotEmpty())
for (oldFragment in fragments)
if (oldFragment.isAdded amp;amp; (!second || oldFragment.tag?.substring(0, userId.length)!!.contains(fragmentTag)))
fragmentTransaction.hide(oldFragment)
//create or show
var fragment = fragmentManager.findFragmentByTag(fragmentTag userId) as? F_Base
if (fragment == null || mKillFrags.contains(fragmentTag) || killFragment) {
if (fragment != null)
fragmentTransaction.remove(fragment)
fragment = createFragmentByTag(fragmentTag, bundle)
if (fragment == null) {
UIUtils.broadcastMessage(R.string.error)
return false
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
fragment.sharedElementEnterTransition = DetailsTransition()
fragment.sharedElementReturnTransition = null
fragment.enterTransition = Fade()
fragment.exitTransition = null
}
//todo test animation
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP amp;amp; sharedView.isNotEmpty()) {
for (view in sharedView)
fragmentTransaction.addSharedElement(view, view.transitionName.substring(0, view.transitionName.lastIndexOf("_")))
fragmentTransaction.replace(content.id, fragment, fragmentTag)
} else
fragmentTransaction.add(content.id, fragment, fragmentTag userId)
} else {
fragmentTransaction.show(fragment)
}
fragmentTransaction.commitAllowingStateLoss()
В этом случае переходы работают, потому что инициализация фрагментов проходит мимо fragmentTransaction.replace()
но я не хочу уничтожать свой текущий фрагмент, за исключением того, что если я уйду, fragmentTransaction.add()
мой переход не будет выполнен.
У вас есть решение?