从片段导航时底部导航栏出现故障
Bottom navigation bar malfunctions when navigating from a fragment
我将底部导航栏与导航组件一起使用
为了让这两个组件协同工作,我调用了:
bottomNavigationView.setupWithNavController(navController)
除了我从片段内部而不是底部导航栏导航时,一切都按预期工作
“查看全部”从底部导航栏打开与“报告”相同的片段
binding.viewAllScansTv.setOnClickListener {
val action = MainFragmentDirections.actionMainFragmentToReportsFragment()
navController.navigate(action)
}
点击“查看全部”后,片段打开,“报告”按钮被选中,但是,导航回“主页”不再有效
我该如何解决这个奇怪的行为?
导航图:
<navigation app:startDestination="@id/mainFragment">
<fragment
android:id="@+id/mainFragment"
android:name="com.package.name.ui.main.MainFragment"
android:label="MainFragment">
<action android:id="@+id/action_mainFragment_to_reportsFragment"
app:destination="@id/reportsFragment" />
</fragment>
</navigation>
底部导航菜单:
<menu>
<item
android:id="@+id/mainFragment"
android:title="Home"/>
<item
android:id="@+id/reportsFragment"
android:title="Reports"/>
<item
android:id="@+id/settingsFragment"
android:title="My account"/>
</menu>
作为@ianhanniballake mentioned in a comment, a similar question was posted
我最后做的是替换
val action = MainFragmentDirections.actionMainFragmentToReportsFragment()
navController.navigate(action)
和
val item = mainBottomNavigationView.menu.findItem(R.id.reportsFragment)
NavigationUI.onNavDestinationSelected(item, navController)
所以基本上我使用 NavigationUI
API 来导航,以便它正确地跟踪返回堆栈。 NavigationUI
API 正在被 BottomNavigationView
内部
使用
我将底部导航栏与导航组件一起使用
为了让这两个组件协同工作,我调用了:
bottomNavigationView.setupWithNavController(navController)
除了我从片段内部而不是底部导航栏导航时,一切都按预期工作
“查看全部”从底部导航栏打开与“报告”相同的片段
binding.viewAllScansTv.setOnClickListener {
val action = MainFragmentDirections.actionMainFragmentToReportsFragment()
navController.navigate(action)
}
点击“查看全部”后,片段打开,“报告”按钮被选中,但是,导航回“主页”不再有效
我该如何解决这个奇怪的行为?
导航图:
<navigation app:startDestination="@id/mainFragment">
<fragment
android:id="@+id/mainFragment"
android:name="com.package.name.ui.main.MainFragment"
android:label="MainFragment">
<action android:id="@+id/action_mainFragment_to_reportsFragment"
app:destination="@id/reportsFragment" />
</fragment>
</navigation>
底部导航菜单:
<menu>
<item
android:id="@+id/mainFragment"
android:title="Home"/>
<item
android:id="@+id/reportsFragment"
android:title="Reports"/>
<item
android:id="@+id/settingsFragment"
android:title="My account"/>
</menu>
作为@ianhanniballake mentioned in a comment, a similar question was posted
我最后做的是替换
val action = MainFragmentDirections.actionMainFragmentToReportsFragment()
navController.navigate(action)
和
val item = mainBottomNavigationView.menu.findItem(R.id.reportsFragment)
NavigationUI.onNavDestinationSelected(item, navController)
所以基本上我使用 NavigationUI
API 来导航,以便它正确地跟踪返回堆栈。 NavigationUI
API 正在被 BottomNavigationView
内部