HarmonyOS 鸿蒙Next Form Kt服务卡片怎么实现跳转App主页面里的二级页面,同时点击返回键能返回主页面?

HarmonyOS 鸿蒙Next Form Kt服务卡片怎么实现跳转App主页面里的二级页面,同时点击返回键能返回主页面? 【设备信息】Mate60
【API版本】Api12
【DevEco Studio版本】5.0.5.300

问题描述

Form Kt服务卡片怎么实现跳转App主页面里的二级页面,同时点击返回键能返回主页面?

技术问题:

  1. App主页面/二级页面等都采用的是Navigation开发的只有一个UIAbility
  2. 目前的demo/文档都是通过postCardAction打开一个UIAbility,但是打开UIAbility怎么调整到二级页面pages,没有思路
  3. 常见问题中倒是提到一种方案: 在目标UIAbility的onWindowStageCreate()中调用loadContent加载指定的page页面。但是怎么通过Navigation返回键回到主页面呢?

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-form-1-V5

UIAbility的onWindowStageCreate()中调用loadContent目前加载的是主页面,然后其它二级/三级页面都是通过Navigation导航实现跳转返回。如果loadContent加载二级页面,那二级页面的返回按钮就又麻烦了,跟现有逻辑冲突很大

想问下 有什么比较好的思路没?


更多关于HarmonyOS 鸿蒙Next Form Kt服务卡片怎么实现跳转App主页面里的二级页面,同时点击返回键能返回主页面?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

想跳转到二级页面还要再返回到首页,可以尝试以下下面的方法,

从卡片拉起UIAbility的时候,onWindowStageCreate()中调用loadContent加载指定的page页面,

加载的这个page页面不要直接加载二级页面,首先去加载首页,然后从首页跳转到二级页面,

可以在首页的aboutToAppear里边直接去跳转二级页面,

这样子就可以从二级页面返回到首页了,

如果从卡片直接跳转到二级页面的话,页面栈里边没有首页,无法返回到首页

更多关于HarmonyOS 鸿蒙Next Form Kt服务卡片怎么实现跳转App主页面里的二级页面,同时点击返回键能返回主页面?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在卡片拉起的回调中用一个全局变量记录卡片参数,

然后在index的onPageShow中根据这个全局变量判断是否跳转到其他页面

cke_377.png

cke_150.png

cke_5892.png

在HarmonyOS中,使用Kotlin实现服务卡片跳转到App主页面里的二级页面,同时能够通过返回键返回到主页面,可以通过以下步骤实现:

  1. 定义跳转逻辑:在服务卡片的Kotlin代码中,使用Intent来定义跳转到目标页面的逻辑。确保目标页面是App主页面里的二级页面。例如:

    val intent = Intent(context, SecondaryActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    context.startActivity(intent)
    
  2. 设置返回键行为:在目标页面(即二级页面)的Kotlin代码中,重写onBackPressed方法,确保按下返回键时能够返回到主页面。例如:

    override fun onBackPressed() {
        val intent = Intent(this, MainActivity::class.java)
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
        startActivity(intent)
        finish()
    }
    
  3. 配置Manifest文件:确保在AndroidManifest.xml中正确声明了主页面和二级页面的Activity。例如:

    <activity android:name=".MainActivity" />
    <activity android:name=".SecondaryActivity" />
    
回到顶部