TabLayout с ViewPager не выбран программно - PullRequest
0 голосов
/ 27 мая 2019

У меня 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 позже.

...