У меня Tabs
установлено с ViewPager
. Если я выберу вкладки в приложении или проведу пальцем по странице, это вызовет onTabSelected()
, но если я выберу первую вкладку программно, она не вызовет эту функцию. Мне нужно установить это программно, потому что я хочу установить видимость кнопки по позиции вкладки (некоторые кнопки не видны, если выбрана первая вкладка).
pagerAdapter = CustomViewPagerAdapter(pageList)
viewPager.adapter = pagerAdapter
tabLayout.setupWithViewPager(viewPager)
tabLayout.addOnTabSelectedListener(object: TabLayout.ViewPagerOnTabSelectedListener(viewPager){
override fun onTabReselected(tab: TabLayout.Tab?) {}
override fun onTabUnselected(tab: TabLayout.Tab?) {}
override fun onTabSelected(tab: TabLayout.Tab?) {
App.log("btnVisibility: onSelected")
setButtonsVisibility()
}
})
viewPager.currentItem = 0
//TRIED THIS ONE TOO - NOT WORKING
tabLayout.getTabAt(0)?.select()
ОБНОВЛЕНИЕ:
Найденное решение: tabLayout.setupWithViewPager(viewPager)
должен вызываться после всех изменений вкладки / страницы. Если вы вызываете его до viewPager.currentItem = 0
или tabLayout.getTabAt(0)?.select()
, эти строки не будут работать с вашими текущими tabLayout
или viewPager
. Довольно странно. Я думал, что он просто используется для подключения ваших TabLayout
и ViewPager
, а не того, что фактическое состояние сохраняется постоянно, и вы не можете внести изменения в ViewPager
позже.