HarmonyOS鸿蒙Next中如何使用Navigation进行页面跳转,有没有类似Android的startActivityForResult方法?

HarmonyOS鸿蒙Next中如何使用Navigation进行页面跳转,有没有类似Android的startActivityForResult方法? 使用Navigation 进行页面跳转,有没有类似android的startActivityforResult这种方法呀

3 回复

楼主您的需求是想实现从A页面跳转到B,B页面返回时能够向A页面传递数据吗?可以看下Navigation 的pushPathByName(name: string, param: Object, onPop: Callback<PopInfo>, animated?: boolean) 这个方法,通过onPop注册页面返回时的回调

更多关于HarmonyOS鸿蒙Next中如何使用Navigation进行页面跳转,有没有类似Android的startActivityForResult方法?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)Next中,页面跳转主要通过Navigation组件实现。Navigation是鸿蒙提供的一种用于管理页面导航的机制,允许开发者在不同页面之间进行跳转。

要使用Navigation进行页面跳转,首先需要定义页面路由,然后通过router.pushrouter.replace方法进行跳转。router.push会将新页面压入栈中,而router.replace则会替换当前页面。

鸿蒙中没有直接对应Android的startActivityForResult方法,但可以通过router.push传递参数,并在目标页面处理完逻辑后,通过router.back方法返回结果。具体步骤如下:

  1. 定义页面路由:在config.json中配置页面路由。

    {
      "pages": [
        "pages/PageA",
        "pages/PageB"
      ]
    }
    
  2. 跳转页面:在源页面(如PageA)中使用router.push跳转到目标页面(如PageB),并传递参数。

    import router from '[@ohos](/user/ohos).router';
    router.push({
      url: 'pages/PageB',
      params: { key: 'value' }
    });
    
  3. 处理返回结果:在目标页面(如PageB)中处理逻辑后,通过router.back返回结果。

    import router from '[@ohos](/user/ohos).router';
    router.back({
      url: 'pages/PageA',
      params: { result: 'success' }
    });
    
  4. 接收返回结果:在源页面(如PageA)中通过router.getParams接收返回的结果。

    import router from '[@ohos](/user/ohos).router';
    const params = router.getParams();
    console.log(params.result); // 输出 'success'
    

通过上述步骤,可以在鸿蒙中实现类似Android的startActivityForResult功能。

在HarmonyOS鸿蒙Next中,使用Navigation进行页面跳转可以通过Router模块实现。具体步骤如下:

  1. 页面跳转:使用Routerpush方法进行页面跳转。

    Router router = Router.getInstance();
    router.push("/destinationPage");
    
  2. 返回值处理:类似Android的startActivityForResult,可以使用AbilitySlicesetResultonResult方法。

    • 在源页面设置返回结果:
      setResult(RESULT_OK, new Intent());
      
    • 在目标页面接收结果:
      onResult(int requestCode, int resultCode, Intent data) {
          if (resultCode == RESULT_OK) {
              // 处理返回数据
          }
      }
      
回到顶部