【问题标题】:Bottom navigation bar malfunctions when navigating from a fragment从片段导航时底部导航栏出现故障
【发布时间】:2022-11-04 12:35:12
【问题描述】:

我正在使用带有导航组件的底部导航栏

为了使这两个组件一起工作,我调用了:

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>

【问题讨论】:

  • 请分享您的导航图;需要看actionMainFragmentToReportsFragment
  • 我更新了问题并添加了导航图和底部导航菜单
  • 不确定您是否使用了正确的导航控制器;你能改用findNavController().navigate(action)
  • 试过了。没有什么变化
  • 看起来像 this question 的副本。

标签: android navigation bottomnavigationview


【解决方案1】:

正如评论中提到的@ianhanniballakehere 发布了类似的问题

我最终做的是更换

val action = MainFragmentDirections.actionMainFragmentToReportsFragment()
navController.navigate(action)

val item = mainBottomNavigationView.menu.findItem(R.id.reportsFragment)
NavigationUI.onNavDestinationSelected(item, navController)

所以基本上我使用NavigationUI API 进行导航,以便它正确地跟踪回栈。 BottomNavigationView 在内部使用相同的 NavigationUI API

【讨论】:

    【解决方案2】:

    在任何视图上设置点击侦听器应该与用户点击底部导航中的相应项目具有相同的效果。所以你需要在BottomNavigationView上调用setSelectedItemId()。

    val mainBottomNav = 活动?.findViewById(R.id.homeBottomNavigation) mainBottomNav?.selectedItemId = R.id.baseHomeFragment

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多