我正在尝试在按下按钮时用另一个片段替换片段。我已经创建了一个列表,我在其中添加了我想要在开始时加载的片段。问题是我在FragmentStatePagerAdapter
:
private val list: MutableList<Fragment> = ArrayList()
override fun getItem(position: Int): Fragment {
return list[position]
}
override fun getCount(): Int {
return list.size
}
fun addFragment(fragment: Fragment){
list.add(fragment)
}
fun replaceFragment(replaceAt: Int, fragment: Fragment){
list.removeAt(replaceAt)
list.add(fragment)
}
调用replaceFragment(..)
,我在其中替换列表中的片段。当我试图在MainActivity中调用此函数时:
fun replace(){
adapter.replaceFragment(2, AnonymousFragment()) }
并且在片段MainActivity().replace()
内访问它,我得到IndexOutOfBoundsException: Index: 2, Size: 0
。那么,有没有办法在Fragment中调用adapter.replaceFragment(..)
方法而不会出现异常?
编辑:例如,当我尝试从fragmentList:adapter.count.toString()
返回列表大小时,我得到3,但是当我尝试从片段中获取它时:{{1}我得到0.基本上,我需要从片段访问列表。