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

如何在Android中使用Jetpack Navigation在一个Activity中显示两个Fragment

解决方案

要在MainActivity中直接显示两个同级Fragment,无需依赖Navigation组件的导航图(nav_graph),可以通过静态添加Fragment的方式实现,具体步骤如下:

1. 修改MainActivity.xml布局

移除关联nav_graph的FragmentContainerView,改用普通布局容器(如ConstraintLayout、LinearLayout)承载两个Fragment,直接在布局中声明这两个Fragment的实例。

示例代码(以左右分栏的ConstraintLayout为例):

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 第一个Fragment -->
    <fragment
        android:id="@+id/first_fragment"
        android:name="com.yourpackage.FirstFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@id/second_fragment"
        app:layout_constraintHorizontal_weight="1" />

    <!-- 第二个Fragment -->
    <fragment
        android:id="@+id/second_fragment"
        android:name="com.yourpackage.SecondFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        app:layout_constraintStart_toEndOf="@id/first_fragment"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_weight="1" />

</androidx.constraintlayout.widget.ConstraintLayout>

2. 移除Navigation相关配置

  • 删除原FragmentContainerView的app:navGraph属性(如果还有残留)
  • 无需再维护nav_graph.xml中的起始目标配置,因为两个Fragment是直接静态加载到Activity布局中的,属于同一层级,不存在导航跳转的起始关系

关键说明

  • 这种方式是静态添加Fragment,Activity启动时会自动初始化并加载这两个Fragment,它们处于同一层级,共享Activity的布局空间
  • 如果后续需要对这两个Fragment进行动态操作(如隐藏、显示),可以在MainActivity中通过supportFragmentManager.findFragmentById()获取实例后进行处理

内容的提问来源于stack exchange,提问作者Pintu Parikh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:43:12