我一直在关注Navigation Architecture Component的文档,以了解这个新导航系统的工作原理 .
要从一个屏幕转到另一个屏幕,您需要一个实现 NavHost
接口的组件 .
NavHost是一个空视图,当用户浏览您的应用程序时,目的地会被换入和换出 .
但是,似乎目前只有Fragments实现 NavHost
Navigation Architecture Component的默认NavHost实现是NavHostFragment .
所以,我的问题是:
-
即使我有一个可以用
Activity
实现的非常简单的屏幕,为了使用这个新的导航系统,需要托管一个包含实际视图的Fragment
? -
Activity
会在不久的将来实施NavHost
界面吗?
--UPDATED--
根据ianhanniballake的回答,我了解每个活动都包含自己的导航图 . 但是如果我想使用nav组件从一个活动转到另一个活动(替换"old" startActivity
call),我可以使用 activity destinations
. 什么是 activity destinations
对我来说不清楚,因为docs for migration没有详细说明:
然后可以通过向导航图添加活动目标来链接单独的活动,从而在整个代码库中替换startActivity()的现有用法 .
-
使用
ActivityNavigator
代替startActivity
有什么好处吗? -
使用导航组件时,从活动开始的正确方法是什么?
2 回答
导航图仅存在于单个活动中 . 根据Migrate to Navigation guide,
<activity>
目的地可以用来从导航图中启动一个活动,但是一旦第二个活动开始,它就完全独立于原始导航图(它可以有自己的图形或只是一个简单的活动) .您可以通过可视化编辑器(通过点击按钮,然后选择项目中的活动)或手动添加XML,将活动目标添加到导航图:
然后,您可以像使用任何其他目标一样使用它来导航到该活动(即,启动活动):
我设法通过使用
ActivityNavigator
从一个活动导航到另一个活动而不托管片段 .