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");

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

你可能感兴趣的:(Jetpack学习笔记(五):使用Navigation在Fragment间传递参数)