![Android Jetpack应用指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/927/32517927/b_32517927.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.4 使用safe args插件传递参数
3.4.1 常见的传递参数的方式
Fragment的切换经常需要伴随着参数的传递,为了配合Navigation组件在切换Fragment时传递参数,Android Studio为开发者提供了safe args插件。在介绍safe args插件之前,我们先来看看Fragment间最常见的传递参数和接收参数的方式。
传递参数。
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_60_1.jpg?sign=1739417144-yptu8tSJrcA3F2mAlPntYhVlMrc2qY8s-0-85fb648d62896517b5fffe9ffd624b36)
接收参数。
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_60_2.jpg?sign=1739417144-WUno2AMhMaRmCgoMADJJDxPNg0kNsd5x-0-82dd0ff5769f51f4e6f7953ccd9ea234)
那么,safe args插件有何不同呢?
3.4.2 使用safe args传递参数
首先,需要安装safe args插件。在Project的build.gradle文件中添加safe args插件。
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_61_1.jpg?sign=1739417144-TYxTFJu2AhJRpiV9qjQX83odiKUTBHBW-0-634938a75be6e21085f3b1226076c742)
接着,需要引用该插件。在app的build.gradle文件中添加对safe args的依赖。
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_61_2.jpg?sign=1739417144-vfFwLL441Dg0lCj3g9XykT9Y4TfMll1D-0-6812e2e9f18cdbb33d5b371845a41369)
在导航图中添加<argument/>标签。可以直接在Text中编写XML代码,也可以通过Design面板进行添加。
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_61_3.jpg?sign=1739417144-V1gTaCHMVonhKEjYXPbAmAbelNcjpGrI-0-ca5ebd7f893e79412f72348341a930fa)
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_62_1.jpg?sign=1739417144-tp7ThvupkBlUZXk4i5OfqzJ14YzEf8TV-0-91b4459a70f45e3819a5dc005b6c8dff)
添加<argument/>标签之后,便可以在app/generatedJava目录下看到safe args插件为我们生成的代码文件了,在这些代码文件中包含了参数所对应的Getter和Setter方法,如图3-15所示。
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_62_2.jpg?sign=1739417144-hZRUW4n6Px3BHPVffYmTqr3Axd0S7Jic-0-3af04fb997526e6b69d2d3b99723b1ac)
图3-15
最后,需要在Fragment中利用所生成的代码文件,在Fragment之间进行参数传递。
传递参数。
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_62_3.jpg?sign=1739417144-3hpEBEztQb6xDluQx6EkWMlzufKVZZvw-0-5eaecb564586c6d3a8b4137b43004084)
接收参数。
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_62_4.jpg?sign=1739417144-xJlKg7QmOqYm4LFMwKLOh5c5ljHtu3sx-0-ed62bc4fe99c6373079d2ac31b5a7d59)
![](https://epubservercos.yuewen.com/BC5419/17545851006441506/epubprivate/OEBPS/Images/39055_63_1.jpg?sign=1739417144-W7yXqHHlBbjZOELCEJ6YBCXxTRDOivCT-0-4fee0491abf487fafaa5fb90d62f83c6)
正如插件safe args名字所代表的意思,它的主要好处在于安全的参数类型。Getter和Setter的方式令参数的操作更友好,更直观,且更安全。