HarmonyOS鸿蒙Next中app入口EntryAbility如何带参数加载指定的Navigation页面?

HarmonyOS鸿蒙Next中app入口EntryAbility如何带参数加载指定的Navigation页面? app入口EntryAbility中如何带参数加载指定的Navigation页面?

6 回复
//Index
@Entry({ storage: LocalStorage.getShared() })
@Component
struct Index {
  pageStack : NavPathStack = new NavPathStack();
  defaultPage = 'PageOne' // 这个页面是没有参数展示默认页面
  @LocalStorageProp('selectPage') selectPage: string = ''; // 在EntryAbility中获取到的数据,可以使用其他方式存储,例如全局数据或者APPStorage等

  build() {
    Navigation(this.pageStack){
    }.onAppear(() => { // 除了在onAppear中进行指定页面跳转,还可以在onPageShow生命周期函数中跳转
      console.log("Navigation onAppear",this.selectPage)
      //在这里判断跳转指定页面
      this.pageStack.pushPath({ name: this.selectPage || this.defaultPage });
    })
    .hideNavBar(true)
  }
}

更多关于HarmonyOS鸿蒙Next中app入口EntryAbility如何带参数加载指定的Navigation页面?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


还有从EntryAbility跳转到指定的NavDestination页面

.onAppear(() => { this.pageInfos.pushPath({ name: “NavDestinationName” }) })

不是从index页面跳转,而是直接从EntryAbility里面应用一启动就跳转到指定的NavDestination页面,

在HarmonyOS鸿蒙Next中,EntryAbility作为应用的入口,可以通过AbilitySliceIntent对象传递参数并加载指定的Navigation页面。具体步骤如下:

  1. 设置Intent参数:在EntryAbilityonStart方法中,创建Intent对象,并通过setParam方法设置需要传递的参数。

  2. 指定目标页面:在Intent对象中,通过setOperation方法指定目标Navigation页面的AbilitySlice

  3. 启动目标页面:调用startAbility方法,启动目标Navigation页面。

示例代码如下:

import Ability from '@ohos.application.Ability';
import Intent from '@ohos.application.Intent';

export default class EntryAbility extends Ability {
    onStart(want, launchParam) {
        let intent = new Intent();
        intent.setParam('key', 'value'); // 设置传递的参数
        intent.setOperation({
            bundleName: 'com.example.myapp',
            abilityName: 'com.example.myapp.MainAbility',
            parameters: { route: 'targetPage' } // 指定目标Navigation页面
        });
        this.context.startAbility(intent).then(() => {
            console.log('Start ability succeed.');
        }).catch((err) => {
            console.error('Start ability failed, error: ' + JSON.stringify(err));
        });
    }
}

在目标Navigation页面的AbilitySlice中,可以通过onStart方法中的want对象获取传递的参数:

import AbilitySlice from '@ohos.application.AbilitySlice';
import Want from '@ohos.application.Want';

export default class TargetSlice extends AbilitySlice {
    onStart(want: Want) {
        let param = want.parameters['key']; // 获取传递的参数
        console.log('Received param: ' + param);
    }
}

通过这种方式,EntryAbility可以带参数加载指定的Navigation页面。

在HarmonyOS鸿蒙Next中,可以通过在EntryAbilityonStart方法中设置Intent参数来加载指定的Navigation页面。具体步骤如下:

  1. 设置Intent参数:在启动EntryAbility时,通过Intent传递一个标识参数,例如targetPage

  2. 解析参数:在EntryAbilityonStart方法中,使用intent.getStringParam("targetPage")获取传递的参数。

  3. 导航到指定页面:根据参数值,使用router.pushrouter.replace方法导航到相应的Navigation页面。

例如:

Intent intent = new Intent();
intent.setParam("targetPage", "HomePage");
startAbility(intent);

EntryAbility中:

String targetPage = intent.getStringParam("targetPage");
if ("HomePage".equals(targetPage)) {
    router.push("pages/HomePage");
}

这样即可实现带参数加载指定页面的功能。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!