I have implemented ViewPager2 with TabLayout, but when I want to choose selected tab programmatically, only TabLayout gets updated and not ViewPager2. Here is my code:
class SettingsFragment : Fragment() {
...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val tabLayout = binding.tabs
val mViewPager = binding.pager
mViewPager.adapter = SettingsPagerAdapter(requireActivity())
TabLayoutMediator(tabLayout, mViewPager
) { tab, position ->
when (position) {
0 -> { tab.text = "First Tab" }
1 -> { tab.text = "Second Tab" }
}
}.attach()
//I tried these, but none of them seemed to work for me:
//(only tabs changed)
//mViewPager.currentItem = 1
//tabLayout.selectTab(tabLayout.getTabAt(1));
//tabLayout.getTabAt(1)?.select()
}
}
And this is my adapter:
class SettingsPagerAdapter(fa: FragmentActivity?) : FragmentStateAdapter(fa!!) {
private val mFragments: Array<Fragment> = arrayOf(
SettingsFirstFragment(),
SettingsSecondFragment()
)
override fun getItemCount(): Int {
return mFragments.size
}
override fun createFragment(position: Int): Fragment {
return mFragments[position]
}
}