I have a simple Activity with TabLayout, ViewPager and 2 Fragments in it. Here\'s my Activity:
public class ManagementCompanyOverviewActivity extends BaseAct
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.