HarmonyOS鸿蒙Next中@Builder如何获取UIAbilityContext

HarmonyOS鸿蒙Next中@Builder如何获取UIAbilityContext 求助,有通过Builder获取UIAbilityContext的方法嘛

2 回复

方式一:builder参数传入

class Params {
  uicontext?: UIContext

  constructor(uicontext?: UIContext) {
    this.uicontext = uicontext;
  }
}

@Builder
function buildTest(params: Params) {
  Button('btn')
  .onClick(() => {
    if (params.uicontext) {
      // 获取uiAbilityContext
      let abilityContext = params.uicontext.getHostContext() as common.UIAbilityContext
    }
  })
}

方式二:在EntryAbility中获取Context后保存至AppStorage,然后在工具类中使用AppStorage获取。

参考链接

AppStorage:应用全局的UI状态存储

更多关于HarmonyOS鸿蒙Next中@Builder如何获取UIAbilityContext的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,@Builder用于构建UI组件,但它本身不直接提供获取UIAbilityContext的方法。要获取UIAbilityContext,通常需要在UIAbility或其生命周期方法中通过this.context获取,然后将其传递给@Builder。例如:

class MyAbility extends UIAbility {
  @Builder myBuilder() {
    // 使用this.context获取UIAbilityContext
    const context = this.context;
    // 构建UI组件
    Text('Hello, HarmonyOS').fontSize(20);
  }
}

通过这种方式,@Builder可以间接使用UIAbilityContext

回到顶部