HarmonyOS 使用Window时,做分屏切换时,回到自己的应用,关闭window重新弹window,子window的事件无法响应

自己应用弹出子window分屏B应用进入后台,关闭子window,回到自己应用,重新弹子window子window无法响应点击事件

HarmonyOS
12h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

请参考以下代码

EntryAbility.ets

import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }

  onDestroy(): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
  }

  onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
    AppStorage.setOrCreate("windowStage", windowStage);
    windowStage.loadContent('pages/Index', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
    });
  }

  onWindowStageDestroy(): void {
    // Main window is destroyed, release UI related resources
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
  }

  onForeground(): void {
    // Ability has brought to foreground
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
  }

  onBackground(): void {
    // Ability has back to background
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
  }
}

Index.ets

import window from '@ohos.window';

@Entry
@Component
struct Index {
  aboutToAppear() {
    let windowStage_: window.WindowStage = AppStorage.get("windowStage") as window.WindowStage;
    windowStage_.createSubWindow("subWindow", (err, win) => { //创建透明子窗口并打开
      win.setUIContent('pages/Page1');
      win.resize(600, 600)
      win.moveWindowTo(300, 300)
      win.showWindow();
    })
  }
  aboutToDisappear(){
    window.findWindow("subWindow").destroyWindow()
  }
  build() {
    Row() {
      Column() {
        Button("子窗口弹窗")
          .margin({ top: 20 })
          .onClick(() => {

          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

Page1.ets

@Entry
@Component
struct Page1 {
  @State message: string = 'Hello World';

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('Page1HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(()=>{
          console.log('===================>点击事件')
        })
    }
    .height('100%')
    .width('100%')
    .backgroundColor(Color.Pink)
  }
}
分享
微博
QQ
微信
回复
9h前
相关问题
调用 window.getWindowAvoidArea 抛出异常
1851浏览 • 1回复 待解决
window.on监听方法使用
324浏览 • 1回复 待解决
windowloadContentByName方法
2191浏览 • 1回复 待解决
HarmonyOS window.findWindow获取窗口错误
416浏览 • 1回复 待解决
floating window可以设置事件穿透吗?
274浏览 • 1回复 待解决
HarmonyOS 底部横条和window路由问题
18浏览 • 1回复 待解决
如何监听window大小变化
519浏览 • 1回复 待解决
HarmonyOS 创建window失败,返回1300002
5浏览 • 0回复 待解决
window版本项目跑不起来
204浏览 • 1回复 待解决
如何获取当前window窗口方向
425浏览 • 1回复 待解决
window获取屏幕方向配置
439浏览 • 1回复 待解决
如何获取主窗口window宽度
1993浏览 • 1回复 待解决
Window窗口生命周期问题
324浏览 • 1回复 待解决
window模拟器无法弹出软键盘
165浏览 • 1回复 待解决
window 安装 Docker问题有知道吗?
2386浏览 • 1回复 待解决
如何创建一个window
321浏览 • 1回复 待解决
HarmonyOSwindow怎么设置固定宽高
1799浏览 • 1回复 待解决
HarmonyOS h5 window.history 无效
23浏览 • 1回复 待解决