防止导航到同一片段

Nac*_*hez 11 android kotlin android-jetpack android-jetpack-navigation

我正在使用带有BottomNavigationView 的Android 导航jetpack 库。我已经实现了 NavHost、NavGraph 和我的片段。当我使用操作进行导航时,一切都按预期工作。

我使用以下代码来设置一切:

 val navController = Navigation.findNavController(this, R.id.nav_host)
 bottom_navigation.setupWithNavController(navController)
Run Code Online (Sandbox Code Playgroud)

问题是,如果我单击选项卡 2 次,则片段会重新创建两次。有没有办法拦截导航?我不想导航到正在显示的同一个片段。

ian*_*ake 36

根据这个问题

随意设置一个OnNavigationItemReselectedListener,它优先于OnNavigationItemSelectedListenerNavigationUI的设置。

val navController = Navigation.findNavController(this, R.id.nav_host)
bottom_navigation.setupWithNavController(navController)
bottom_navigation.setOnNavigationItemReselectedListener {
  // Do nothing to ignore the reselection
}
Run Code Online (Sandbox Code Playgroud)