系列文章目录
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() {@Overridepublic 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);
}
运行截图:
源码地址