android - Pass data from Activity to Fragment in ViewPager

后端 未结 6 562
夕颜
夕颜 2020-12-29 07:41

I have a simple Activity with TabLayout, ViewPager and 2 Fragments in it. Here\'s my Activity:

public class ManagementCompanyOverviewActivity extends BaseAct         


        
6条回答
  •  温柔的废话
    2020-12-29 08:13

    Fragment

    class SampleFragment : Fragment(), BaseFragmentInteraction {
        override fun updateFragmentData(data: String) {
            Toast.makeText(activity!!, data, Toast.LENGTH_SHORT).show()
        }
    }
    

    Interface

    interface BaseFragmentInteraction {
        fun updateFragmentData(data: String)
    }
    

    Activity:

    view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
    
            override fun onPageSelected(position: Int) {
                val fragmentItem = (view_pager.adapter as FragmentPagerAdapter).getItem(view_pager.currentItem)
                (fragmentItem as BaseFragmentInteraction).updateFragmentData("SomeData")
            }
    
            override fun onPageScrollStateChanged(state: Int) {}
    
            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
        })
    

    The updateFragmetData method will be called in the current selected viewpager item fragment. You can also add a tag parameter to updateFragmetData so that you can be sure the right fragment instance is called. If required you can call isVisible in updateFragmetData implementation to make sure the fragment is visible.

提交回复
热议问题