HarmonyOS鸿蒙Next中关于Navigation路由跳转的问题

HarmonyOS鸿蒙Next中关于Navigation路由跳转的问题

就是我想知道,目前官方推荐的Navigation路由跳转模式,以及页面从属布局,是怎样的一个布置。

我对开发文档和社区的提问看了看,我自己画了个图不知道对不对

现在单体应用开发的话,路由从属关系是不是下图这样的?

之前有开发过安卓,一个Activity就是一个页面,Activity之间进行跳转,这个很好理解

但是鸿蒙的这个页面跳转就很迷。

下面这个图放到安卓里面,就是全局只有一个Activity,其他所有页面通过Fragment进行跳转。我不知道这样理解对不对。

cke_354.png

对应到项目工程文件布局如下

cke_49999.png

这样理解对不对呢?


更多关于HarmonyOS鸿蒙Next中关于Navigation路由跳转的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

可以这样理解,但是启动页和登录页 等进入首页之前的页面 可以不在首页路由里面,可以使用 router ,方便跳转,这样 navigation 返回的时候 不会有问题。

更多关于HarmonyOS鸿蒙Next中关于Navigation路由跳转的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


明白,我看官方的一些demo也是这么操作的。但是我看官方已经不推荐使用router。那既然不推荐,并在未来版本不再维护。然后官方在demo中还使用。就有点迷。

那假设我不用router。用navigation也是可以实现的吧?我把navigation设为一个无内容的空组件,

你可以试试,多测测,官方使用 router 也是有原因的,各种打开 app 的场景,navigation 不好实现,

鸿蒙的navigation和jackpack compose的navigation不一样。Android compose的NavHost可以设置一个startDestination,就是首次显示NavHost时默认显示的目标页面。鸿蒙navigation导航页它是一个根页面,它有自己的内容,点击某个地方再进入到对应的NavDestination。

把下面html内容转换成Markdown格式,要求:

  1. 转换的时候需要去掉复制和深色代码主题
  2. 输出的内容不显示“基本信息”
  3. html代码中有图片需要转换成markdown格式
  4. html代码中没有图片请不要加上图片
  5. html中img标签的地址为空的话不输出, 不转换
  6. 输出内容的时候不需要解释,不需要建议
  7. 只需要输出转换完毕的Markdown文档,不需要输出其他内容
  8. 内容中没有图片或者图片为空的话不要加图片
  9. 不要在内容中加https://example.com/image.jpg这样的图片

在HarmonyOS鸿蒙Next中,Navigation组件用于实现页面之间的路由跳转。通过NavDestinationNavController,开发者可以定义页面路由并控制跳转逻辑。NavController提供了navigate方法,支持传递参数和动画效果。路由配置通常在navigation.xml中定义,页面跳转时可通过NavControllernavigate方法指定目标页面ID。鸿蒙Next的路由机制支持多级页面栈管理,确保页面跳转的流畅性和一致性。

你的理解基本正确。在HarmonyOS Next中,Navigation确实采用了类似单Activity多Fragment的架构思想,但具体实现有所不同。

  1. 页面结构:
  • 一个Ability(对应安卓的Activity)作为容器
  • 通过Navigation组件管理多个Page(对应安卓的Fragment)
  • 每个Page可以有自己的生命周期
  1. 路由跳转:
  • 推荐使用Router模块进行页面导航
  • 支持标准路由(router.pushUrl)和命名路由
  • 页面栈管理更加灵活,支持多种导航模式
  1. 项目结构:
  • 你的工程文件布局合理
  • 每个Page建议放在独立目录
  • 通过统一的router配置文件管理路由

与安卓的主要区别:

  1. Navigation组件提供了更丰富的转场动画支持
  2. 页面生命周期管理更精细化
  3. 支持动态加载和卸载Page

你的示意图基本反映了HarmonyOS Next的推荐架构,这种设计有利于实现更好的性能和多设备适配。

回到顶部