We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
上一篇我介绍了Navigation的入门。 这一篇我们专门解决导航的跳转问题,怎么跳转,怎么传参数
上一篇我们知道destination,就是导航中的一个个点。 那么怎么把destinations一个个关联起来就是路径,就是action
只要通过ide,拖动空心圆就能建立关联
action的id可以通过Resource关联
上一篇我们提到可以通过目的地的id来导航 那当然也通过action的id来导航 Navigation.findNavController(view).navigate(R.id.viewTransactionsAction);
Navigation.findNavController(view).navigate(R.id.viewTransactionsAction);
我们知道,没有参数的“死路径”是不具备高度动态性的,参数是一定要加的。
好了参数定义好了,要怎么传怎么收那?
使用 Bundle 对象在目的地之间传递参数 虽然有“丐版”传递参数的办法,但是为毛我还要再重新自己写一下参数的封装和拆分啊。我在导航图里面的定义一定都没用到。显然导航图里面的参数用意不是这么用的。
使用 Safe Args 传递安全的数据 这已经是标配选项,如果要用参数传递就并不是一个可选项,不选虽然不至于不能用但是不方便
build.gradle增加classpath
buildscript { repositories { google() } dependencies { def nav_version = "2.4.1" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
在app的build.gradle的plugin里面增加 id 'androidx.navigation.safeargs'
导航跳转入口
binding.btnSpace.setOnClickListener(v -> { HomeFragmentDirections.ActionHomeFragmentToSpaceFragment action = HomeFragmentDirections.actionHomeFragmentToSpaceFragment("Hello Arg from Home"); Navigation.findNavController(v).navigate(action); });
这里HomeFragmentDirections是自动生成的代码,我只需正确调用api就行。基本上一看就懂
目的地参数接收
@Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); textView = view.findViewById(R.id.space_tv); textView.setText( "Space arg:" + SpaceFragmentArgs.fromBundle(getArguments()).getSoapTest() ); }
相关Demo练习repository
The text was updated successfully, but these errors were encountered:
No branches or pull requests
引言
上一篇我介绍了Navigation的入门。
这一篇我们专门解决导航的跳转问题,怎么跳转,怎么传参数
Action
上一篇我们知道destination,就是导航中的一个个点。
那么怎么把destinations一个个关联起来就是路径,就是action
只要通过ide,拖动空心圆就能建立关联
action的id可以通过Resource关联
基于id导航
上一篇我们提到可以通过目的地的id来导航
那当然也通过action的id来导航
Navigation.findNavController(view).navigate(R.id.viewTransactionsAction);
为目的地增加参数
我们知道,没有参数的“死路径”是不具备高度动态性的,参数是一定要加的。
如图所示 这样到相关目的的action就会默认带相关参数
传递参数
好了参数定义好了,要怎么传怎么收那?
使用 Bundle 对象在目的地之间传递参数
虽然有“丐版”传递参数的办法,但是为毛我还要再重新自己写一下参数的封装和拆分啊。我在导航图里面的定义一定都没用到。显然导航图里面的参数用意不是这么用的。
使用 Safe Args 传递安全的数据
这已经是标配选项,如果要用参数传递就并不是一个可选项,不选虽然不至于不能用但是不方便
build.gradle增加classpath
在app的build.gradle的plugin里面增加
id 'androidx.navigation.safeargs'
导航跳转入口
这里HomeFragmentDirections是自动生成的代码,我只需正确调用api就行。基本上一看就懂
目的地参数接收
参考链接
相关Demo练习repository
The text was updated successfully, but these errors were encountered: