首页
学习
活动
专区
工具
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,则是代表包含关系,是否包含指定的页面。...在代码中,也存在类似的调用方法

1.9K00

JetPack指路明灯—Navigation

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

96920

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对象

57110

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

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

56210

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 <?

30520
领券