HarmonyOS鸿蒙Next中createWindow方法在Stage模型中为何无法创建TYPE_APP类型的窗口呢?

HarmonyOS鸿蒙Next中createWindow方法在Stage模型中为何无法创建TYPE_APP类型的窗口呢? https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#windowtype7

TYPE_APP 0
表示应用子窗口。 模型约束:此接口仅可在FA模型下使用。

如上面的文档描述,TYPE_APP类型的窗口只能在FA模型下使用。

但是我现在使用的是Stage模型开发,过程中有一个需求,想要创建子窗口,并且希望能够让子窗口与某个之前创建出来的子窗口A相关联,这样当子窗口A创建出一系列相关子窗口BCD的时候,当我关闭子窗口A,就可以连带把BCD都关掉。另外,还希望能在打开窗口的时候直接设置窗口的宽高。这些需求我看用createWindow窗口比较合适,其中的Configuration有丰富的配置控制项。然而,惊奇的发现文档中提示在Stage模型下无法使用。。。

请问大佬们,这是为什么?有没有什么替代方案(当然也可以自己实现联动逻辑,那就是另一回事了),或者未来会放开吗?


更多关于HarmonyOS鸿蒙Next中createWindow方法在Stage模型中为何无法创建TYPE_APP类型的窗口呢?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

使用这个api:createSubWindow,和你要求的差不多。设置子窗口大小,可以参考这篇帖子:https://developer.huawei.com/consumer/cn/forum/topic/0201169066669531008?fid=0109140870620153026

更多关于HarmonyOS鸿蒙Next中createWindow方法在Stage模型中为何无法创建TYPE_APP类型的窗口呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发者您好,关于您咨询的问题,您可参考:创建该WindowStage实例下的子窗口

你好。

stage模型创建子窗口,需要使用windowStage.createSubWindow("testSubWindow");

```typescript
// EntryAbility.ets
import { UIAbility } from '[@kit](/user/kit).AbilityKit';
import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';

export default class EntryAbility extends UIAbility {
  // ...
  onWindowStageCreate(windowStage: window.WindowStage): void {
    console.info('onWindowStageCreate');
    let windowClass: window.Window | undefined = undefined;
    // 创建子窗
    try {
      let subWindow = windowStage.createSubWindow("testSubWindow");
      subWindow.then((data) => {
        if (data == null) {
          console.error("Failed to create the subWindow. Cause: The data is empty");
          return;
        }
        windowClass = data;
        let promise = windowClass.setSubWindowModal(true);
        promise.then(() => {
          console.info('Succeeded in setting subwindow modal');
        }).catch((err: BusinessError) => {
          console.error(`Failed to set subwindow modal. Cause code: ${err.code}, message: ${err.message}`);
        });
      });
    } catch (exception) {
      console.error(`Failed to create the subWindow. Cause code: ${exception.code}, message: ${exception.message}`);
    }
  }
}

在HarmonyOS鸿蒙Next的Stage模型中,createWindow方法无法创建TYPE_APP类型的窗口,主要是因为Stage模型采用了新的窗口管理机制。Stage模型将应用窗口划分为不同的层级,TYPE_APP类型的窗口通常用于应用的主窗口,而在Stage模型中,主窗口的创建和管理由系统自动处理,开发者无需手动创建。开发者应使用系统提供的WindowStage来管理应用窗口,确保窗口生命周期与应用的逻辑一致。

回到顶部