中国优质的IT技术网站
专业IT技术创作平台
IT职业在线教育平台
如何通过WindowStage创建一个子窗口?
微信扫码分享
// 创建子窗口 private createSubWindow(windowStage: window.WindowStage | null) { try { if (!windowStage) { return; } windowStage.createSubWindow('mySubWindow', (err: BusinessError, data) => { if (err.code) { console.error("Failed to create the subwindow, Cause: " + JSON.stringify(err)); return; } this.subWindow = (data as window.Window); if (this.subWindow) { // 设置子窗口蒙层颜色 this.initColor(); // 设置子窗口可触 this.subWindow.setWindowTouchable(true); // 设置窗口UI this.loadContent(entryName); // 展示子窗口 this.showSubWindow(); } }); } catch (exception) { console.error("Failed to create the window, Cause: " + JSON.stringify(exception)); } } /** * 设置子窗口蒙层颜色 */ initColor() { try { // 获取指定resource对象对应的字符串 this.maskColor = context.resourceManager.getStringSync($r('app.string.custom_dialog_mask_color').id); console.log("getStringSync: " + this.maskColor) } catch (err) { console.error(`getStringSync failed, code is ${err.code}, message is ${err.message}`); } } // 为当前WindowStage加载命名路由页面 private loadContent(path: string) { if (this.subWindow) { // TODO: 知识点: 用loadContentByName为当前窗口加载命名路由页面,通过LocalStorage传递状态属性给加载的页面 this.subWindow.loadContentByName(path, this.Storage, (err: BusinessError) => { if (this.subWindow) { try { this.subWindow.setWindowBackgroundColor(this.maskColor); } catch (exception) { console.error('Failed to set the background color. Cause: ' + JSON.stringify(exception)); }; } if (err.code) { console.error("Failed to load the content. Cause:" + JSON.stringify(err)); return; } }); } }