Get current fragment with ViewPager2

后端 未结 11 2024
野的像风
野的像风 2020-12-24 01:15

I\'m migrating my ViewPager to ViewPager2 since the latter is supposed to solve all the problems of the former. Unfortunately, when using it with a

11条回答
  •  我在风中等你
    2020-12-24 01:44

    was facing same issue now its solved by adding one object in adapter

    class MyViewPager2Adapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {
    
    
        private val FRAGMENTS_SIZE = 2
    
        var currentFragmentWeakReference: WeakReference? = null
    
        override fun getItemCount(): Int {
            return this.FRAGMENTS_SIZE
        }
    
        override fun createFragment(position: Int): Fragment {
    
            when (position) {
                0 -> {
                    currentFragmentWeakReference= MyFirstFragment()
                    return MyFirstFragment()
                }
                1 -> {
                    currentFragmentWeakReference= MySecondFragment()
                    return MySecondFragment()
                }
            }
    
            return MyFirstFragment() /for default view
    
        }
    
    }
    

    after creating adapter I registered my Viewpager 2 with ViewPager2.OnPageChangeCallback() and overrided its method onPageSelected

    now simple did this trick to get current fragment

     private fun getCurrentFragment() :Fragment?{
    
            val fragment = (binding!!.pager.adapter as MyViewPager2Adapter).currentFragmentWeakReference?.get()
    
            retrun fragment
        }
    

    I've only tested this with 2 fragments in ViewPager2

    cheers guys , hope this mayhelp you.!

提交回复
热议问题