You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FragmentContainerView搭配Navigation Component实现底部导航时Fragment不切换

问题排查与解决方案

1. 根布局尺寸配置错误

你当前activity_dashboard.xml中最外层的ConstraintLayout宽高都设置为0dp,作为根布局它没有上级约束,0dp的配置会导致整个容器无法正常渲染,直接修改根布局的宽高为match_parent即可:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

2. Fragment容器和导航栏重叠

当前nav_host_fragment的顶部约束是父布局顶部,会和上方的Toolbar重叠,底部没有做约束也会被BottomNavigationView遮挡,即使Fragment切换了你也看不到内容,需要修改FragmentContainerView的上下约束:

<androidx.fragment.app.FragmentContainerView
    android:id="@+id/nav_host_fragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    <!-- 修改顶部约束为Toolbar底部 -->
    app:layout_constraintTop_toBottomOf="@id/toolbar"
    <!-- 修改底部约束为底部导航栏顶部 -->
    app:layout_constraintBottom_toTopOf="@id/bottom_nav"
    app:defaultNavHost="true"
    app:navGraph="@navigation/nav_graph" />

3. 可选校验项

如果修改完上面两个配置还没生效,可以校验以下内容:

  • 确认项目依赖的Navigation Component版本不低于2.4.0,避免低版本的兼容bug
  • 确认你的父类PBActivity中没有重写onSupportNavigateUp等导航相关方法干扰跳转逻辑
  • 你当前代码里菜单id和导航图id是匹配的,这部分配置没有问题不需要修改

内容的提问来源于stack exchange,提问作者Taimoor Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:24:02