Когда пользователь меняет ориентацию экрана и выполняет «goToDetails», FragmentManager выдает
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
Код класса:
@ActivityScope
class NavigatorImpl @Inject constructor(): ActivityLifecycleTask(), Navigator {
private lateinit var fragmentManager: FragmentManager
@IdRes
private var fragmentContainerRes: Int = 0
override fun onCreate(activity: BaseActivity) {
fragmentManager = activity.supportFragmentManager
fragmentContainerRes = activity.fragmentContainerRes()
}
override fun init(fragment: BaseFragment) {
goToFragment(fragment, TAG_INIT_FRAGMENT)
}
override fun goToDetails(id: Long) {
goToFragment(DetailsFragment.create(id))
}
private fun goToFragment(fragment: Fragment, tag: String? = null) {
Log.d(javaClass.simpleName, "goToFragment")
fragmentManager.beginTransaction()
.add(fragmentContainerRes, fragment, tag)
.addToBackStack(null)
.commit()
}
companion object {
private const val TAG_INIT_FRAGMENT = "TAG_INIT_FRAGMENT"
}
}
commitAllowingInstanceStateLoss()
не работает.onCreate(activity)
выполняется в обратном вызове Activity onCreate
.Затем, пока savedInstanceState == null
, init()
из NavigatorImpl выполняется.