Bonjour à tous,
Je n’arrive pas a faire excactement ce que je veux avec les transitions à l’initialisation de mes fragments:
val fragmentTransaction = fragmentManager.beginTransaction()
val fragments = fragmentManager.fragments
if (fragments.isNotEmpty())
for (oldFragment in fragments)
if (oldFragment.isAdded && (!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 && 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()
Dans ce cas les transitions fonctionne car l’initialisation des fragments passent par fragmentTransaction.replace() mais je n’ai pas envie de détruire mon fragment courant pour autant. Sauf que si je laisse que fragmentTransaction.add() ma transition n’est pas prise en compte.
Avez vous une solution ?