我有一个带有底部导航标签的Activity,它正在改变 Fragments 中的。 当我在这些标签上来回单击时,在某一点上它停止工作。 代码执行得很好,因为我放入了一些日志。 但是 Fragments 没有被交换。
代码在kotlin中,但它是相当直接的。fun showTabFragment(tag: String) {
val currentFragment: Fragment? = supportFragmentManager.fragments?.lastOrNull()
var fragment = supportFragmentManager.findFragmentByTag(tag)
val fragmentExists = fragment!= null
if (fragment == null) {
when (tag) {
TAG_LOGBOOK -> fragment = LogbookFragment()
TAG_RECIPES -> fragment = RecipesFragment()
TAG_PROFILE -> fragment = ProfileFragment()
else -> fragment = MeetingPlacesFragment()
}
}
val transaction = supportFragmentManager.beginTransaction()
if (currentFragment!= null) {
Log.i("jacek","hiding" + currentFragment.javaClass.simpleName)
transaction.hide(currentFragment)
}
if (fragmentExists) {
Log.i("jacek","showing" + fragment.javaClass.simpleName)
transaction.show(fragment)
} else {
Log.i("jacek","adding" + fragment.javaClass.simpleName)
transaction.add(R.id.container, fragment, tag)
}
transaction.commit()
}
Fragments 很重。 我会尝试一些轻量级的,但这不应该是我的观点中的问题。 还有什么我可以尝试的?
我正在使用最新的支持库- 25.2.0也不感兴趣替换 Fragments,而不需要重新创建它们。