Error message:Method not implemented.

Error message:Method not implemented. 在NavDestination增加attributeModifier,运行时报Error message:Method not implemented.,哪里写的不对嘛?或者应该怎么实现

@Preview
@ComponentV2
export struct InputPhonePage {

  // style
  private privacyMode = new NavDestinationPrivacyMode(this.getUIContext())
 
  build() {
    NavDestination() {
     
    }.hideTitleBar(true)
    .attributeModifier(this.privacyMode)
  }
}
export class NavDestinationPrivacyMode implements AttributeModifier<NavDestinationAttribute> {
  ctx: UIContext

  constructor(ctx: UIContext) {
    this.ctx = ctx
  }

  applyNormalAttribute(instance: NavDestinationAttribute): void {
    instance.onShown(()=>{

    })
  }
}

8 回复

实测了下。

报错问题是这样的: cke_2507.png

错误代码位置是:

applyNormalAttribute(instance: NavDestinationAttribute): void {
    instance.onShown(()=>{  // onShown方法不支持在NavDestinationAttribute里面使用

    })
  }

这个的确的api不支持的。麻烦在用的时候看下文档。

api能用的会有标注的。

cke_7743.png

这里就有标注。

需要用哪个属性就在文档里面搜下确定是否能用。

cke_11711.png


看你的解释的api能用的,onShown这个api是从11开始对比,那我最低从12起,应该用着没问题吧?也没有说明不能在attributeModifier中不能使用,我有阅读这块的。另外,onWillShown和onShown什么关系,我没有调用onWillShown。还是说onShown这块文档其实也该补充一下,不能在attributeModifier中不能使用,

你的问题是api能否在attributeModifier这里面使用。 看我的第二张图,api能否在attributeModifier里面都会有标注的。onShown这个api的文档那里
并没有标注能在attributeModifier中使用。

明白了,原来是这样,没有标注就不能用。那我希望官方文档对于每一个控件,attributeModifier能支持对应的方法提供一个表格,列就是从哪个api开始支持,行就是支持哪些。这样便于开发者从中查找对应的功能,

要么是api版本不匹配,要么是@Preview内不支持用这个api

@Preview没有关系,直接真机运行就崩溃,

该错误信息表明调用的方法在当前鸿蒙系统中尚未实现。可能原因包括:

  1. 使用了未在当前版本支持的API;
  2. 调用了实验性功能;
  3. 第三方库与系统版本不兼容。

请检查方法是否属于HarmonyOS官方文档中标注的可用接口,并确认开发环境与目标设备的系统版本匹配。

这个错误通常是因为 NavDestination 组件在当前的 HarmonyOS Next SDK 版本中尚未实现 attributeModifier 方法。

根据你的代码,你尝试为 NavDestination 应用一个自定义的 AttributeModifier 来设置隐私模式。目前,attributeModifier 接口可能仅在部分容器组件(如 ColumnRowStack)或基础组件上完全实现。

对于 NavDestination 的隐私模式设置,建议直接使用其提供的现有属性方法。查看 API 文档,NavDestination 本身可能已经提供了设置隐私模式的方法,例如 .privacyMode() 或类似接口。

请尝试以下方式:

NavDestination() {
  // 页面内容
}
.hideTitleBar(true)
.privacyMode(YourPrivacyModeOption) // 使用组件原生的隐私模式设置方法

请查阅当前版本 HarmonyOS Next 的官方 NavDestination 组件 API 文档,确认支持哪些直接设置隐私模式的属性或方法。如果官方文档中 NavDestination 确实没有提供 attributeModifier 方法,那么当前就无法通过该接口进行自定义属性修改。

回到顶部