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

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

HarmonyOS
2024-12-18 15:15:21
浏览
收藏 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
微信
回复
2024-12-18 18:18:21
相关问题
调用 window.getWindowAvoidArea 抛出异常
2204浏览 • 1回复 待解决
HarmonyOSwindow无法使用onBackPress
262浏览 • 1回复 待解决
windowloadContentByName方法
2465浏览 • 1回复 待解决
window.on监听方法使用
565浏览 • 1回复 待解决
floating window可以设置事件穿透吗?
412浏览 • 1回复 待解决
HarmonyOS window.findWindow获取窗口错误
662浏览 • 1回复 待解决
HarmonyOS 底部横条和window路由问题
246浏览 • 1回复 待解决
HarmonyOS window重名方法调用
314浏览 • 1回复 待解决
HarmonyOS 如何获取appwindow
222浏览 • 1回复 待解决
如何监听window大小变化
906浏览 • 1回复 待解决
HarmonyOS NativeXComponent获取window问题
459浏览 • 1回复 待解决
window获取屏幕方向配置
931浏览 • 1回复 待解决
如何获取当前window窗口方向
711浏览 • 1回复 待解决
window版本项目跑不起来
612浏览 • 1回复 待解决
Window窗口生命周期问题
792浏览 • 1回复 待解决