系列文章目录
Navigation的简单使用(一)
一、Safe Args传递数据
1.引入库
- 1.将
Safe Args
添加到您的项目,请在顶层 build.gradle
文件中包含以下classpath:
buildscript {
repositories {
google()
}
dependencies {
def nav_version = "2.8.0"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
- 2.将以下行添加到
应用
或模块
的build.gradle
文件中:
plugins {
id 'androidx.navigation.safeargs'
}
注:我这个是最新版的AS,你们不要写跟我一样,只需要把id 'androidx.navigation.safeargs'
添加上去就行,其他地方不用修改
2.在navigation文件添加参数
3.编写代码
Page1Fragment
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Button btn_page1=view.findViewById(R.id.btn_page1);
btn_page1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/**
* Page1FragmentDirections :是根据当前所操作的类Page1Fragment,然后在源目的地的名称后面加上“Directions”。
* actionPage1FragmentToPage2Fragment :是navigation文件对应的action的id
*/
Page1FragmentDirections.ActionPage1FragmentToPage2Fragment action = Page1FragmentDirections.actionPage1FragmentToPage2Fragment();
action.setOrigin("从Page1页面传递过来的");
//navigate 方法会处理从当前 Fragment 到目标 Fragment 的过渡,包括任何定义的过渡动画,并且会携带 action 对象中设置的参数。
Navigation.findNavController(view).navigate(action);
}
});
}
Page2Fragment
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
/**
* Page2FragmentArgs:是由目标类Page2Fragment,后面加上“Args”来的,跟navigation文件设置的那样
*/
String origin = Page2FragmentArgs.fromBundle(getArguments()).getOrigin();
Log.d("TAG", "Page2Fragment接受到的数据: "+origin);
}
运行截图:
源码地址