Jetpack学习笔记(五):使用Navigation在Fragment间传递参数

在之前的笔记中,一直没有讲到Fragment间传递参数的问题,大部分时候直接使用ViewModel或者构造函数函数就行传参,当然网络上也有部分使用调用Activit中的方法来进行参数共享的歪道,但显而易见这些方法既不安全也增加了程序的强耦合,因此本编笔记使用了安卓官方提供的方法。

1、初始化导航控制器

NavController controller=Navigation.findNavController(requireView());

2、新建Bundle对象,并添加相应的参数

Bundle bundle=new Bundle();
bundle.putString("key","this is key");

这里bundle中可以传入多个不同类型的参数,其中每个参数使用一个KEY来标明

3、发送参数

在进行页面动作时,将之前的bundle放入其中

 controller.navigate(ldResActivity,bundle);

注意在不使用ldRes的情况下可以直接使用Fragment.setArguments()方法发送参数

4、接收参数

在跳转的页面使用getArguments()方法可以获取传入的Bundle对象,在使用之前的KEY取回参数即可

 Bundle bundle=getArguments();
 String str=bundle.getString("Key");

此时即可将之前的this is key赋值给str

需要注意的是,此方法需要判空,避免出现空指针错误,此时可以添加参数defaultValue

 String str=bundle.getString("Key","null");

进行默认赋值,即当没有该参数时候默认使用后者赋值

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值