ViewPager en Fragment no está funcionando por segunda vez

Estoy usando FrameLayout para mostrar un fragment que contiene un ViewPager. A veces necesito cambiar a otro fragment. Todo funciona bien hasta que quiera volver al Fragmento que contiene ViewPager.

Aquí está el código que estoy usando:

Fragmento que contiene 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(Shanetworking.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, Shanetworking.database.getRandomData()) val quoteFragment = QuoteFragment() quoteFragment.getItemFromAdapter(quoteItemList[position]) return quoteFragment } override fun getCount(): Int { return ALLOWED_PAGES } 

}

CustomViewPagerAdapter es una class que contiene un método para extraer algunos datos. Aquí está el código:

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

Y el error que obtengo es:

 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) 

Básicamente, la lógica del progtwig es así: Inicio de la aplicación -> Nuevo fragment (todo funciona bien) -> onButtonClick cambio de fragment -> onButtonClick -> Nuevo fragment con el mismo Viewpager (ahora recibo el error)

No guardo ningún dato en Fragment destroy para usarlo en el siguiente fragment pero sigo teniendo este error. Que debería hacer ?