Android - 为什么在弹出backstack后调用onAttach()和onCreate()?

时间:2018-04-18 22:14:50

标签: android android-fragments oncreate

过渡:片段A>片段B

片段A经过onDestroyView()并且不会通过任何其他拆除方法。

转换:弹出片段B并恢复片段A

片段A经过onAttach()onCreate()。为什么会这样?不应该片段A只需要重新创建它的视图吗?

如何替换片段(在Kotlin中):

private fun replaceFragment(fragment: Fragment, @IdRes frameId: Int, fragmentTag: String) {
    val transaction: FragmentTransaction = supportFragmentManager.beginTransaction()
    transaction.replace(frameId, fragment, fragmentTag)
    transaction.addToBackStack(fragmentTag)
    transaction.commit()
}

以这种方式弹出Backstack:

supportFragmentManager.popBackStack()

1 个答案:

答案 0 :(得分:0)

FragmentTransaction.replace()函数可以做到这一点。您需要实例化您的片段,并使用ViewPager等解决方案在片段中导航。 Java或Kotlin中的代码也是一样的。我只是回复一个类似你的问题。试试这个:Change fragments without recreate them