HarmonyOS 鸿蒙Next 创建subWindow

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 创建subWindow

export class MediaDetailWin {
static MediaPageCnt: number = 0
}

function jumpMediaDetail() { let windowStege: window.WindowStage = AppStorage.get(“windowStage”) as window.WindowStage; windowStege.createSubWindow(MediaDetailPage.MEDIA_DETAIL_WINDOW_NAME + MediaDetailWin.MediaPageCnt, (err, win) => { MediaDetailWin.MediaPageCnt = MediaDetailWin.MediaPageCnt + 1 win.loadContent(‘pages/media/MediaDetailPage’, storage); win.showWindow(); }) }

多次调用jumpMediaDetail时,获取静态变量MediaDetailWin.MediaPageCnt始终为0


更多关于HarmonyOS 鸿蒙Next 创建subWindow的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

以下Demo能够获取到MediaDetailWin.MediaPageCnt的值,请参考

import { window } from "[@kit](/user/kit).ArkUI";

export class MediaDetailWin {
static MediaPageCnt: number = 0
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct SubWindowPage {
[@State](/user/State) message: string = 'Hello World';
[@State](/user/State) windowStage: window.WindowStage = AppStorage.get("windowStage") as window.WindowStage
private MediaDetailWin: MediaDetailWin = new MediaDetailWin();
build() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button('创建子窗口').onClick(()=>{

this.windowStage.createSubWindow("window1", (err, windowClass) => {
let subWindowID: number = windowClass.getWindowProperties().id
console.log('window1',subWindowID)
if (err.code > 0) {
console.error("failed to create subWindow Cause:" + err.message)
return;
}
// 设置子窗口加载页
try {
MediaDetailWin.MediaPageCnt = MediaDetailWin.MediaPageCnt + 1
console.log("MediaDetailWin.MediaPageCnt:",MediaDetailWin.MediaPageCnt.toString())
windowClass.setUIContent("pages/Tabs/tabPage", () => {
windowClass.setWindowBackgroundColor("#00000000")
});
// 设置子窗口左上角坐标
windowClass.moveWindowTo(0, 550)
// 设置子窗口大小
windowClass.resize(vp2px(300), vp2px(300))
// 展示子窗口
windowClass.showWindow();
// 设置子窗口全屏化布局不避让安全区
windowClass.setWindowLayoutFullScreen(true);
} catch (err) {
console.error("failed to create subWindow Cause:" + err)
}
})
})
Button('关闭子窗口')
.onClick(()=>{
window.findWindow('window1').destroyWindow().then((res) => {
console.log("destroyWindow success")
}).catch(() => {
console.log("destroyWindow fail")
})
})
}
.height('100%')
.width('100%')
}
}

更多关于HarmonyOS 鸿蒙Next 创建subWindow的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中创建subWindow(子窗口)通常涉及使用ArkUI框架进行UI开发。以下是一个基本的步骤概述,用于在鸿蒙应用中创建并显示一个子窗口:

  1. 定义子窗口布局:首先,在resources/base/layout目录下创建一个XML文件,定义子窗口的布局。这包括所需的UI组件及其属性。

  2. 创建子窗口类:在Java或TypeScript中创建一个类,继承自AbilitySubAbility(取决于你的应用架构),并在其中加载子窗口的布局。

  3. 启动子窗口:在主窗口或父窗口中,通过调用Intent或相关API来启动子窗口。确保传递必要的参数和数据给子窗口。

  4. 处理生命周期:在子窗口类中重写生命周期方法(如onStartonStop等),以管理子窗口的生命周期事件。

  5. 显示与隐藏:使用窗口管理器或相关API来控制子窗口的显示和隐藏。

请注意,具体实现细节可能因鸿蒙系统的版本和API更新而有所变化。确保查阅最新的鸿蒙开发文档和API参考。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部