【发布时间】:2020-04-08 13:39:18
【问题描述】:
我已将FragmentStatePagerAdapter 用于Viewpager,如果我在调用 api 之前设置适配器,它工作正常。如果我在一段时间后设置适配器会出现异常(我只设置了一次适配器)。
我实际上不知道确切的问题和解决方案是什么。
请查看以下代码以供参考
适配器:
class MyPagerAdapter(
private val context: Context,
fm: FragmentManager,
private val event: EventInfoResponse
) :
FragmentPagerAdapter(fm,
BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
) {
private val fragmentsList = arrayListOf<Fragment>()
val fragmentTitleList = arrayListOf<String>()
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> Fragment1.newInstance(event)
else -> Fragment2.newInstance(event.id!!)
}
}
override fun getCount(): Int {
return 2
}
override fun getPageTitle(position: Int): CharSequence? {
return when (position) {
0 -> "title 1"
else -> "title 2"
}
}
}
应用适配器:
vpEvent.apply {
adapter = MyPagerAdapter(requireContext(),childFragmentManager,event!!)
tlEvent.setupWithViewPager(this)
}
例外:
java.lang.IllegalStateException: Fragment already added: Fragment1{9b6bafd (10e16e31-8262-4161-aeff-c78e1180030f) id=0x7f0a065f android:switcher:2131363423:0}
at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.java:1379)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:399)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2079)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
【问题讨论】:
标签: android android-fragments kotlin fragmentstatepageradapter