如何使用 Kotlin 在 android 中的 BottomNavigationView 上设置 OnNavigationItemListener?

新手上路,请多包涵

我使用 kotlin-android-extension,我可以调用 bottomNavigationView id 从布局文件到 kotlin 文件。我可以使用 bottomNavigationView.setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener {}) ,但下一步是什么?

据我所知,在 Java 中,还有另一个名为 onNavigationItemSelected 的函数,但我在 kotlin 中找不到它。

这是我想在 Java 中使用但不能在 kotlin 中编写的示例代码。

 bottomNavigationView.setOnNavigationItemSelectedListener(
    new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.action_favorites:

                case R.id.action_schedules:

                case R.id.action_music:

            }
            return true;
        }
    });

原文由 j.elmer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 802
2 个回答

您可以使用这种格式的代码:

 bottomNavigation.setOnNavigationItemSelectedListener { item ->
    when (item.itemId) {
        R.id.action_favorites -> {
        }
        R.id.action_schedules -> {
        }
        R.id.action_music -> {
        }
    }
    true
}

原文由 Glory 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用以下代码

bottom_navigation.setOnNavigationItemSelectedListener {
            var selectedFragment: Fragment = A()
            when (it.itemId) {
                R.id.action_item1 -> selectedFragment = A()
                R.id.action_item2 -> selectedFragment = B()
                R.id.action_item3 -> selectedFragment = C()
            }
            val transaction = fragmentManager.beginTransaction()
            transaction.replace(R.id.frame_layout, selectedFragment)
            transaction.commit()
            return@setOnNavigationItemSelectedListener true
        }

原文由 Thanh vũ 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题