【发布时间】:2019-08-12 08:30:04
【问题描述】:
我有这段代码,我希望我的 FragmentStatePageAdapter(在 viewpager 内)的第一个片段根据一些布尔值进行更改。
inner class MainFragmentAdapter(fragmentManager: FragmentManager) :
FragmentStatePagerAdapter(fragmentManager) {
override fun getCount(): Int {
return MainView.Fragments.values().size
}
override fun getItem(position: Int): Fragment? {
return when (position) {
0 -> {
if (booleanOne && !booleanTwo) {
FragmentOne.newInstance()
} else if (booleanTwo && !booleanOne) {
FragmentTwo.newInstance()
} else {
FragmentThree.newInstance()
}
}
else -> null
}
}
}
到目前为止,我找到的唯一解决方案是,当我个人知道其中一个布尔值发生了变化时,我只是做了类似的事情:
_fragmentAdapter = MainFragmentAdapter(getLifecycleFragmentManager())
fragmentViewPager.adapter = _fragmentAdapter
所以我只是再次设置了适配器,但这样做对我来说似乎很不合适。我不能强迫它再次计算 getItem 吗?
【问题讨论】:
-
也许添加一个
addOnPageChangeListener并在那里传递一些东西?
标签: android kotlin fragment fragmentpageradapter