BottomNavigationView链接到ViewPager,当我将Listener设置为bottomNavigationView时,我必须单击两次才能执行我的操作

时间:2017-08-29 01:38:29

标签: android kotlin

这是我的代码:

  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来执行相同的代码时,我可以得到我想要的东西。可以有人帮助我吗?

2 个答案:

答案 0 :(得分:2)

您使用的是setOnNavigationItemReselectedListener(),只有当标签重新选择时才触发,而不是首次选择标签时调用的正确setOnNavigationItemSelectedListener()方法。

答案 1 :(得分:-1)

试试这个

tabLayout.setupWithViewPager(viewPager);

这会自动同步ViewPagerTabLayout