BottomNavigationView链接到ViewPager,当我设置监听器bottomNavigationView,我必须点击两次执行我所做的

这里是我的代码:

class MainActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) BottomNavigationViewHelper1.disableShiftMode(bottomNavigationView) bottomNavigationView.setOnNavigationItemSelectedListener { item: MenuItem -> when (item.itemId) { R.id.item_home -> { Log.e("Vincent", "++++++++++") viewpager.setCurrentItem(0, true) return@setOnNavigationItemSelectedListener true } R.id.item_finance -> { viewpager.setCurrentItem(1, true) return@setOnNavigationItemSelectedListener true } R.id.item_event -> { viewpager.setCurrentItem(2, true) return@setOnNavigationItemSelectedListener true } R.id.item_mine -> { viewpager.setCurrentItem(3, true) return@setOnNavigationItemSelectedListener true } } true } viewpager.adapter = PagerAdapter(supportFragmentManager) } 

}

只有当我点击相同的标签两次,然后viewpager.setCurrentItem()将执行。 但是当我使用Java而不是kotlin来执行相同的代码时,我可以得到我想要的。有没有人能帮助我?

您正在使用setOnNavigationItemReselectedListener() ,该选项仅在重新选择选项卡时触发,而不是在首次选择选项卡时调用的正确的setOnNavigationItemSelectedListener()方法。

尝试这个

tabLayout.setupWithViewPager(viewPager);

这将自动同步ViewPagerTabLayout