Android Jetpack应指南学习笔记8Navigation(二)使用safe args传递参数

在android中,未使用safe args之前,通常我们Fragment之间传递参数是这样的:

 

1.传递参数
//未采用safe args的传递方式
Bundle bundle = new Bundle();
bundle.putString("user_name", "Michael");
bundle.putInt("age", 30);
Navigation.findNavController(v).navigate(R.id.action_mainFragment_to_secondFragment, bundle);

2.接收参数

Bundle bundle = getArguments();
if(bundle != null){
String userName = bundle.getString("user_name");
int age = bundle.getInt("age");
}

3.使用safe args之前我们先要安装插件,步骤如下:
3.1在Project的build.gradle目录下添加插件:
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"

3.2 在App的build.gradle目录下引用该插件:

apply plugin: 'androidx.navigation.safeargs'

4.在导航图中添加<argument/>标签。我们可以直接在Text中编写XML代码,也可以通过Design面板添加.

5.添加成功之后我们可以在app/generatedJava中看到safe args插件为我们生成的代码文件:

 6.我们使用safe args之后是这样的:
//通过safe args完成参数传递

Bundle bundle = new MainFragmentArgs.Builder().setUserName("大海").setAge(28).setGender("男").build().toBundle(); Navigation.findNavController(v).navigate(R.id.action_mainFragment_to_secondFragment, bundle);

7.接收参数:
//通过safe args完成参数接收 Bundle bundle = getArguments();

if (bundle != null) {

String userName = MainFragmentArgs.fromBundle(getArguments()).getUserName();

int age = MainFragmentArgs.fromBundle(getArguments()).getAge();

String gender = MainFragmentArgs.fromBundle(getArguments()).getGender();

}

8.效果图:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值