相关问题
#鸿蒙通关秘籍#如何创建和管理应用的子窗口?
48浏览 • 1回复 待解决
#鸿蒙通关秘籍# 在HarmonyOS中如何通过子窗口方式创建和展示弹窗?
69浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何创建和销毁弹窗控制器?
116浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何销毁不再需要的子窗口?
39浏览 • 1回复 待解决
#鸿蒙通关秘籍#在开发中如何正确实现UIAbility的创建和销毁?
71浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中创建和运行动画?
61浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中创建和使用List组件?
44浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中创建和使用HTTP请求?
128浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中创建和管理Worker线程?
88浏览 • 2回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中创建和使用stepper组件?
51浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在UIAbility中处理资源的创建和释放
97浏览 • 2回复 待解决
#鸿蒙通关秘籍# 鸿蒙系统中应用子窗口的创建和使用过程中需要注意哪些关键细节?
58浏览 • 0回复 待解决
#鸿蒙通关秘籍#在鸿蒙中如何创建和抛出TypeError?
28浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中创建和注册多个ArkTS应用页面?
129浏览 • 1回复 待解决
#鸿蒙通关秘籍#频繁创建和销毁组件时如何避免在aboutToAppear和aboutToDisappear中执行耗时操作?
113浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中创建和使用跨文件复合组件?
75浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中创建包含子组件的按钮?
76浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中创建和使用swiper组件进行内容滑动切换?
72浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何创建和管理鸿蒙Worker线程?
84浏览 • 1回复 待解决
HarmonyOS 需要灵活创建和销毁组件的方式
332浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何销毁在HarmonyOS中创建的PurgeableMemory对象?
77浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用FrameNode创建和删除节点?
103浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何创建和初始化DataAbility组件?
103浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过Native C/C++创建子进程?
71浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何创建和启动一个ServiceAbility?
65浏览 • 1回复 待解决
可以在HarmonyOS的某个页面中通过按钮点击事件来创建或销毁子窗口。以下是实现的步骤:
EntryAbility
中传递windowStage
到要处理的页面。示例代码:
javascript // EntryAbility.ets onWindowStageCreate(windowStage: window.WindowStage) { windowStage.loadContent('pages/Index', (err) => { if (err.code) { console.error('加载内容失败: ' + JSON.stringify(err)); return; } console.info('成功加载内容'); }) AppStorage.setOrCreate('windowStage', windowStage); }
// Index.ets import { window } from '@kit.ArkUI'; import { BusinessError } from '@kit.BasicServicesKit';
let windowStage_: window.WindowStage | undefined = undefined; let sub_windowClass: window.Window | undefined = undefined;
@Entry @Component struct Index { @State message: string = 'Hello World';
private CreateSubWindow(){ windowStage_ = AppStorage.get('windowStage'); if (windowStage_ == null) { console.error('创建子窗口失败: windowStage_ is null'); } else { windowStage_.createSubWindow("mySubWindow", (err: BusinessError, data) => { if (err.code) { console.error('创建子窗口失败: ' + JSON.stringify(err)); return; } sub_windowClass = data; sub_windowClass.moveWindowTo(300, 300, (err: BusinessError) => { if (err.code) { console.error('移动窗口失败: ' + JSON.stringify(err)); return; } }); sub_windowClass.resize(500, 500, (err: BusinessError) => { if (err.code) { console.error('改变窗口大小失败: ' + JSON.stringify(err)); return; } }); sub_windowClass.setUIContent("pages/subWindow", (err: BusinessError) => { if (err.code) { console.error('加载内容失败: ' + JSON.stringify(err)); return; } sub_windowClass.showWindow((err: BusinessError) => { if (err.code) { console.error('显示窗口失败: ' + JSON.stringify(err)); return; } }); }); }) } }
private destroySubWindow(){ (sub_windowClass as window.Window).destroyWindow((err: BusinessError) => { if (err.code) { console.error('销毁窗口失败: ' + JSON.stringify(err)); return; } }); }
build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) Button(){ Text('CreateSubWindow') .fontSize(24) }.width(220).height(68) .onClick(() => this.CreateSubWindow()) Button(){ Text('destroySubWindow') .fontSize(24) }.width(220).height(68) .onClick(() => this.destroySubWindow()) } .width('100%') } .height('100%') } }
// subWindow.ets @Entry @Component struct SubWindow { @State message: string = 'Hello subWindow'; build() { Row() { Column() { Text(this.message) .fontSize(50) } .width('100%') } .height('100%') } }