首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么时候可以使用findNavController方法本身而不是NavHostFragment呢?

可以使用findNavController方法本身而不是NavHostFragment的情况有以下几种:

  1. 当需要在Fragment之外的地方获取NavController对象时,可以使用findNavController方法。NavHostFragment是一个包含NavController的特殊Fragment,它可以通过getChildFragmentManager()方法获取到NavController对象。但是如果需要在Fragment之外的地方获取NavController对象,就无法使用NavHostFragment了,这时可以使用findNavController方法。
  2. 当需要在非Fragment类中获取NavController对象时,可以使用findNavController方法。NavHostFragment是一个Fragment类,如果需要在非Fragment类中获取NavController对象,就无法使用NavHostFragment了,这时可以使用findNavController方法。
  3. 当需要在自定义的Fragment类中获取NavController对象时,可以使用findNavController方法。NavHostFragment是一个特殊的Fragment类,如果需要在自定义的Fragment类中获取NavController对象,就无法使用NavHostFragment了,这时可以使用findNavController方法。

总结起来,可以使用findNavController方法本身而不是NavHostFragment的情况是需要在Fragment之外的地方、非Fragment类或自定义的Fragment类中获取NavController对象时。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android进阶必学】JetPack指路明灯—Navigation

同时,Navigation也是一个优秀的Fragment管理工具(当然,不仅仅是管理Fragment,Activity也是可以的),可以很好的处理之前使用Fragment那些不是很好的方面,通过Navigation...使用路由 在Fragment中,可以通过NavController来进行路由,代码如下所示。...popBackStack navigateUp只能响应向上一级的路由控制,不能跨级进行路由返回,popBackStack则是对其的补充,可以指定路由返回的action,代码如下所示。...所以,从上面的实例就可以分析出,在action中配置popUpTo属性,指的是在当前路由中,一直将页面出栈,直到指定的页面为止,popUpToInclusive,则是代表包含关系,是否包含指定的页面。...在代码中,也存在类似的调用方法

2K00

JetPack指路明灯—Navigation

同时,Navigation也是一个优秀的Fragment管理工具(当然,不仅仅是管理Fragment,Activity也是可以的),可以很好的处理之前使用Fragment那些不是很好的方面,通过Navigation...使用路由 在Fragment中,可以通过NavController来进行路由,代码如下所示。...popBackStack navigateUp只能响应向上一级的路由控制,不能跨级进行路由返回,popBackStack则是对其的补充,可以指定路由返回的action,代码如下所示。...所以,从上面的实例就可以分析出,在action中配置popUpTo属性,指的是在当前路由中,一直将页面出栈,直到指定的页面为止,popUpToInclusive,则是代表包含关系,是否包含指定的页面。...在代码中,也存在类似的调用方法

97520

Android Jetpack - 使用 Navigation 管理页面跳转

使用 android:name 指定 Fragment 的类型为 NavHostFragment使用 app:navGraph 指定 Navigation 文件。...配置跳转 在 Navigation 里,页面的跳转是交给 NavController 来处理的,获取 NavController 的方法有这么三种: NavHostFragment.findNavController...) 复制代码 拿到后,通过 navigate 方法,通过传入 Action 的 id,实现跳转,比如: NavHostFragment .findNavController(this...,和我们原来的跳转一样,可以通过 Bundle 来传递参数: val bundle = Bundle() bundle.putString("name", "SouthernBox") NavHostFragment...转场动画 如果需要自定义的页面转场动画,使用 Navigation 可以很方便的实现。 这里举个例子,比如我们需要一个从右向左切入的过场动画,先创建这个动画的 xml 文件: <?

2.4K10

【详解】Android Jetpack 新组件之Navigation的用法和源码结构分析

>>>> Navigation to a destination 要导航到目的地,您可以使用下列四种方法之一: Navigation.findNavController(Activity, @IdRes...Int viewId) Navigation.findNavController(View) NavHostFragment.findNavController(Fragment) View.findNavController...安全参数建立在Bundle方法的基础上,但需要一些额外的代码来换取更多的类型安全。如果您使用Gradle,则可以使用安全参数插件。...使用场景,多分支深度跳转可以考虑使用,如图: ?...Navigator是一个抽象类,提供navigate、popBackStack抽象方法,指定导航和回退导航,ActivityNavigator和FragmentNavigator才是实现类,最终的导航行为都是他们负责实现

2.2K40

JetPack--Navigation

:一个特殊的Fragment,可以将它看作是其他Fragment的容器,Navigation Graph中Fragment正是使用NavHostFragment进行展示的 3.NavController...根据下图提示的先导入Fragment,再建立连接关系: 在Activity布局文件中使用NavHostFragment: xml如下,使用的是fragment标签: <?...2.跳转动画 添加Fragment的跳转动画比较简单,只需要在NavigationGraph中的action添加即可 image.png 3.参数传递 NavController的navigate方法可以传递一个...bundle,接受的Fragment和以前一样可以用getArguments方法获取: //Activity中绑定后,可以通过内部任意一个View获取NavController对象 NavController...,使用我们定义的menu,然后在onCreate中调用NavigationUI的setupActionBarWithNavController方法,其中多传入一个AppBarConfiguration对象

58010

Jetpack组件之Navigation

优点 可视化的页面导航图,可以使用 Android Studio 的 Navigation Editor 来查看和编辑导航图。 通过destination和action完成页面间的导航。...我们切换到Design面板,可以看到面板左上角提示No NavHostFragments found,接下来添加NavHostFragment。...Safe Args插件传递参数 使用Safe Args Gradle插件,该插件可以生成简单的对象和构造器类,支持在destination之间进行类型安全的导航和参数传递。...可以使用查询参数占位符代替路径参数,也可以将查询参数占位符与路径参数结合使用使用默认值或可为 null 的值所定义的变量的查询参数占位符无需匹配。...定制FragmentNavigator 阅读FragmentNavigator的源码时,可以看到页面切换的时候使用的是replace(),这会造成Fragment生命周期的重启,界面数据重新加载,不能复用

3K20

使用导航组件: 对话框目的地 | MAD Skills

而对于那些我不喜欢的,我也可以避免再买到它们。但我很健忘,所以问题来了,我如何才能记录如此重要的数据? 我知道了: 我要用一个应用!...我想实现在当前 activity 上弹出一个相对轻量级的弹窗,不是替换掉整个页面。我知道导航组件可以处理目的地,但是那只能替换掉单个 NavHostFragment 中的 fragment,对吗?...导航组件默认的行为确实是替换掉 NavHostFragment 中的 fragment。但是导航组件同样可以处理在 NavHostFragment 之外的对话框目的地。...选中列表中的 MyDialog 作为新的目的地,并且确保它是一个 "对话框" 不是一个 "Fragment" 善于观察的读者可能会从上面截图中发现一个 IDE 的小 bug。...还好,解决方法也非常简单,所以大家这里只需要知道有可能会出现这样的问题就可以了。 如果您碰到了这个问题,直接去导航图的 XML 代码中将 fragment 标签改成 dialog,就可以解决这个问题。

1.4K30

Andrroid Jetpack之Navigation

,调用Navigation的findNavController方法找到NavController,findNavController还有其他参数的方法大家可以自己试试,然后调用navigate方法,参数就是...或者直接使用createNavigateOnClickListener 效果如图: 按返回键会回退到上一个fragment,也可以调用NavController的popBackStack进行回退 接下来看看怎么传递参数...navigate有好几个方法,如下: 有个带bundle参数的,可以用这个传递参数: val bundle = Bundle() bundle.putString("text","aaaaaa")...Navigation.findNavController(it).navigate(R.id.action_fragmentA_to_fragmentB, bundle) 也可以在navigation的...深层链接 deep-link 使用 deep-link可以创建深层链接,类似activity的自定义URL使用Scheme方式来跳转,可以直接跳转到指定Fragment <?

31120

Navigation深入浅出,到出神入化,再到实战改造

navigationUp和popBackStack()回退上一级时有什么区别,该如何正确使用 跳转时 有时用的是Action的ID,有时用的是Fragment的ID 他俩到底在什么场景下,区分该将哪个传入方法作为参数...使用和核心方法 1.创建NavGraph 图片.png <?...拦截返回键的点击事件,这样Fragment就可以想Activity一样,具有回退,返回事件 配置路由XML文件,然后加载进NavHostFragment中 app:navGraph属性,对应的就是NavGraph...代码实现路由跳转和方法解析 3.1 核心方法 Acitivty#findNavController() 传入navGraph id Fragment#findNavController() 直接调用...navigateUp()和popBackStack()都表示回退上页面,但navigateUp()在Deeplink的情况下 应用1a(deeplink)路由到应用2的B后navigateUp()返回到a,popBackStack

57710
领券