2017-06-18 92 views
2

我使用kotlin-android-extension,我可以从布局文件调用bottomNavigationView id到kotlin文件。我可以使用bottomNavigationView.setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener {}),但接下来呢?如何在Android上使用Kotlin在BottomNavigationView上设置OnNavigationItemListener?

据我所知在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; 
     } 
    }); 
+0

在android studio中使用java到kotlin转换器 –

+0

这个应用程序已经从一开始就使用kotlin,所以我只能写kotlin吗?不要在kotline文件中写入Java。 –

+0

只是意识到你可以复制粘贴并自动转换它 –

回答

4

您可以使用此代码格式:

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

那“真”代表什么? – Chris

+0

对不起,在上次编辑过程中,“返回”表达式被错误地从代码中删除。 我现在修复了它。 谢谢。 @Chris – Glory

+0

当我设置返回true这个显示错误消息,只有false保持错误清洁。那是什么.. –

0

使用必须在每个块添加注释的回报拉姆达仅

bottomNavigation.setOnNavigationItemSelectedListener { item -> 
     when(item.itemId){ 
      R.id.home -> {} 

      R.id.group -> {} 

      R.id.profile -> {} 
     } 
     [email protected] true 
    } 
1

返回布尔因为setOnNavigationItemSelectedListener预计返回类型

fun initViews() { 
    bottomNavigationView.setOnNavigationItemSelectedListener { item -> 
     when (item.itemId) { 
      R.id.action_menu_media -> { 
       true 
      } 
      R.id.action_menu_tag -> { 
       true 
      } 
      R.id.action_menu_home -> { 
       true 
      } 
      else -> { 
       true 
      } 
     } 

    } 
} 
相关问题