我正在尝试制作动态循环视图寻呼机适配器(我想动态地从适配器添加删除页面)但是从最后一页转到第二页时我收到错误。
我的适配器类是:
class UpCommingEventAdapter(fragmentManager: FragmentManager, val mFragmentList: ArrayList<UpcommingEventsFragment>) : FragmentStatePagerAdapter
(fragmentManager) {
override fun getItem(position: Int): Fragment {
return when (position) {
0 -> {
mFragmentList[mFragmentList.size - 1]
}
mFragmentList.size + 1 -> {
UpcommingEventsFragment.newInstance("0")
}
else -> {
when (position) {
1 -> {
UpcommingEventsFragment.newInstance("0")
}
else -> {
mFragmentList[position - 1]
}
}
}
}
}
fun removeFragmnet(tag: String) {
for (i in 0 until mFragmentList.size) {
if (mFragmentList[i].ftag == tag) {
mFragmentList.removeAt(i)
this.notifyDataSetChanged()
break
}
}
this.notifyDataSetChanged()
}
override fun getPageTitle(position: Int): CharSequence {
return "Page " + position
}
override fun getCount(): Int {
val itemsSize = mFragmentList.size
return if (itemsSize > 1) itemsSize + 2 else itemsSize
}
override fun getItemPosition(`object`: Any): Int {
return PagerAdapter.POSITION_NONE
}
}
我正在传递片段列表,我收到以下错误:
java.lang.IllegalStateException: Fragment already active
at android.support.v4.app.Fragment.setInitialSavedState(Fragment.java:519)
at android.support.v4.app.FragmentStatePagerAdapter.instantiateItem(FragmentStatePager
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1004)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1186)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1086)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:267)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
at android.view.Choreographer.doCallbacks(Choreographer.java:702)
at android.view.Choreographer.doFrame(Choreographer.java:635)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
答案 0 :(得分:0)
我认为
else -> {
mFragmentList[position - 1]
}
应该是
else -> {
mFragmentList[position]
}