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

如何向Bottom Navigation的起始Fragment传递navArgs参数?

解决BottomNavigationView起始Fragment参数缺失崩溃问题

在MainActivity的onCreate方法中完成以下操作:

  1. 获取NavController实例
    先找到布局中的NavHostFragment,再拿到对应的NavController:

    NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager()
            .findFragmentById(R.id.nav_host_fragment_activity_main);
    NavController navController = navHostFragment.getNavController();
    
  2. 构建参数Bundle
    把需要传递的email和jwt打包进Bundle:

    Bundle args = new Bundle();
    args.putString("email", "实际用户邮箱地址");
    args.putString("jwt", "实际的jwt令牌内容");
    
  3. 给起始Fragment设置默认参数
    加载导航图,为HomeFragment设置默认参数后重新绑定给NavController:

    NavInflater navInflater = navController.getNavInflater();
    NavGraph navGraph = navInflater.inflate(R.navigation.mobile_navigation);
    // 替换成你导航图中HomeFragment的实际ID
    int homeFragmentId = R.id.navigation_home;
    navGraph.findNode(homeFragmentId).setDefaultArguments(args);
    navController.setGraph(navGraph);
    

额外注意事项

  • 确认导航图(mobile_navigation.xml)中HomeFragment的参数配置为必填状态(无默认值),示例配置如下:
    <fragment
        android:id="@+id/navigation_home"
        android:name="com.example.yourapp.HomeFragment"
        android:label="@string/title_home"
        tools:layout="@layout/fragment_home">
        <argument
            android:name="email"
            app:argType="string"
            app:nullable="false" />
        <argument
            android:name="jwt"
            app:argType="string"
            app:nullable="false" />
    </fragment>
    
  • 后续切换底部导航栏再切回HomeFragment时,参数会自动保留。若需要动态更新参数,切换时调用navController.navigate(homeFragmentId, 新的参数Bundle)即可,注意避免重复创建Fragment实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:50:12