Android 片段中的ViewPager第二次不工作

Android 片段中的ViewPager第二次不工作,android,android-fragments,android-viewpager,kotlin,Android,Android Fragments,Android Viewpager,Kotlin,我使用FrameLayout来显示包含ViewPager的片段。有时我需要换成另一个片段。一切正常,直到我想回到包含ViewPager的片段 以下是我正在使用的代码: 包含ViewPager的片段: override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { val view : View = inflater!!

我使用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
}
程序逻辑基本上如下所示: 应用程序开始->新建片段(每一个都可以正常工作)->onButtonClick change Fragment->onButtonClick->使用相同的Viewpager新建片段(现在我得到了错误)


我没有在片段销毁上保存任何数据,以便在下一个片段上使用,但我仍然得到这个错误。我该怎么办?我也有同样的问题。将my
PageAdapter
的父类从
android.support.v4.app.FragmentPagerAdapter
更改为
android.support.v4.app.FragmentStatePagerAdapter
解决了“第二次”时我的ViewPager显示问题

事实上,如果您更改:

 val vpAdapter = ViewPagerAdapter(activity.supportFragmentManager)


你解决了吗this@Yogesh是的,检查下面的答案。谢谢是从FragmentPagerAdapter更改为FragmentStatePagerAdapter,然后所有寻呼机片段再次初始化并正常工作。
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)
 val vpAdapter = ViewPagerAdapter(activity.supportFragmentManager)
 val vpAdapter = ViewPagerAdapter(childFragmentManager)