Tabs

class TabsFragment: FragmentViewModel<TabsViewModel>(R.layout.fragment_tabs),
ViewTabs
{
override fun onViewCreated(...)
{
super.onViewCreated(...)
tabs.adapter = TabsAdapter(routerTabs, childFragmentManager, lifecycle)
// Make offscreenPageLimit equals to number of pages
tabs.offscreenPageLimit = TABS_MAP.size
// Navigate to tab with index
bottomNavigationView.setOnItemSelectedListener {
routerTabs.route(TABS_MAP[it.itemId]!!)
}
// Add close tab stack to top behavior
bottomNavigationView.setOnItemReselectedListener {
routerTabs[TABS_MAP[it.itemId]!!].closeTabToTop()
}
// Give Router opportunity to change tabs
routerTabs.tabChangeCallback = {
bottomNavigationView.selectedItemId = TABS_BACK_MAP[it]!!
tabs.setCurrentItem(it, false)
}
}
companion object
{
val TABS_MAP = mutableMapOf(...) // tabId to tab's index
val TABS_BACK_MAP = mutableMapOf(...) // tab's index to tabId
}
}Last updated
Was this helpful?