在片段ViewPager不工作的第二次

我正在使用一个FrameLayout来显示一个包含ViewPager的片段。 有时候我需要换一个片段。 一切工作正常,直到我想回到包含ViewPager的片段。

这是我正在使用的代码:

包含ViewPager的片段:

override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view : View = inflater!!.inflate(R.layout.main_quotes, null) val vpQuotes = view.findViewById<CustomViewPager>(R.id.vpQuotes) val vpAdapter = ViewPagerAdapter(activity.supportFragmentManager) vpQuotes.adapter = vpAdapter val vpPageChangeListener : ViewPager.OnPageChangeListener = object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { } override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { } override fun onPageSelected(position: Int) { (activity as ChangeLikeButton).changeLikeButton(vpAdapter.getQuoteItem(Shared.currentViewPager.currentItem)) } } vpQuotes.swipeDirection = CustomViewPager.SwipeDirection.RIGHT vpQuotes.addOnPageChangeListener(vpPageChangeListener) vpQuotes.setPageTransformer(true, ViewPagerTransformer()) vpQuotes.post { vpPageChangeListener.onPageSelected(0) } return view } 

ViewPagerAdapter:

 class ViewPagerAdapter(fm : FragmentManager) : CustomViewPagerAdapter(fm) { override fun getQuoteItem(position: Int): QuoteItem { return quoteItemList[position] } override var quoteItemList: ArrayList<QuoteItem> = arrayListOf() private val ALLOWED_PAGES = 100 override fun getItem(position: Int): Fragment { quoteItemList.add(position, Shared.database.getRandomData()) val quoteFragment = QuoteFragment() quoteFragment.getItemFromAdapter(quoteItemList[position]) return quoteFragment } override fun getCount(): Int { return ALLOWED_PAGES } 

}

CustomViewPagerAdapter是一个包含一个方法提取一些数据的类这里是代码:

 abstract class CustomViewPagerAdapter(fm : FragmentManager) : FragmentPagerAdapter(fm) { abstract var quoteItemList : ArrayList<QuoteItem> abstract fun getQuoteItem(position: Int) : QuoteItem 

而我得到的错误是:

 java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.get(ArrayList.java:411) at studio.monk.royalquotes.custom.CustomViewPagerAdapter.getQuoteItem(CustomViewPagerAdapter.kt:13) at studio.monk.royalquotes.fragments.MainFragment$onCreateView$vpPageChangeListener$1.onPageSelected(MainFragment.kt:44) at studio.monk.royalquotes.fragments.MainFragment$onCreateView$1.run(MainFragment.kt:55) 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:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

基本上,程序逻辑是这样的:应用程序的开始 – >新的片段(每一个工作正常) – > onButtonClick更改片段 – > onButtonClick – >新的片段与相同Viewpager(现在我得到的错误)

我不保存任何数据在片段销毁使用它在下一个片段,但我仍然得到这个错误。 我该怎么办 ?