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

如何在Android Studio导航抽屉Activity模板的Fragment间传递字符串变量

实现方案说明

你当前使用的导航抽屉模板采用Jetpack Navigation组件管理Fragment导航,Intent通常用于跨Activity传递数据,同Activity下的Fragment之间传参无需使用Intent,且你不需要修改现有MainActivity的代码,直接按以下步骤配置即可:

步骤1:确认导航图配置

找到项目中res/navigation/mobile_navigation.xml文件,假设你需要从HomeFragment向GalleryFragment传递字符串,在GalleryFragment对应的destination节点中添加参数声明:

<fragment
    android:id="@+id/nav_gallery"
    android:name="com.example.myt.ui.gallery.GalleryFragment"
    android:label="Gallery"
    tools:layout="@layout/fragment_gallery">
    <!-- 添加字符串参数声明,name是参数名,defaultValue是默认值 -->
    <argument
        android:name="share_text"
        app:argType="string"
        android:defaultValue="默认值" />
</fragment>

步骤2:发送方Fragment(如HomeFragment)传递参数

在需要触发跳转的位置添加如下代码,比如点击HomeFragment里的某个按钮时:

// 要传递的字符串
String sendText = "需要传递的字符串内容";
// 封装Bundle
Bundle bundle = new Bundle();
bundle.putString("share_text", sendText);
// 跳转同时传参
NavController navController = Navigation.findNavController(view);
navController.navigate(R.id.nav_gallery, bundle);

步骤3:接收方Fragment(如GalleryFragment)接收参数

在GalleryFragment的onViewCreated方法中获取参数即可:

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    // 获取传递的参数
    if (getArguments() != null) {
        String receivedText = getArguments().getString("share_text");
        // 这里就可以使用拿到的字符串了,比如赋值给TextView
        Log.d("参数接收", "拿到的字符串:" + receivedText);
    }
}

可选优化方案

如果要避免手动写参数名出错,可以引入Navigation的Safe Args插件,通过自动生成的类安全传参,不需要手动拼写字符串参数名,适合参数较多的场景。

内容的提问来源于stack exchange,提问作者Михаил Потемкин

相关产品推荐
方舟 Agent Plan

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

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