HarmonyOS 如何拦截物理返回

想在页面返回的时候加一个询问弹窗,如何实现

HarmonyOS
2024-12-24 15:02:55
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

页面返回是想加弹框,可在 onBackPress()生命周期中添加弹框,具体可参考下面demo:

//Page7112
import { router } from '@kit.ArkUI';
@Entry
@Component
struct Page7112 {

  build() {
    Column() {
      Button('Page7113')
        .margin(20)
        .onClick(() => {
          router.pushUrl({url:"pages/Page7113"})
        })
    }
  }
}

//Page7113
import { router } from '@kit.ArkUI';

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

  // 只有被@Entry装饰的组件才可以调用页面的生命周期
  onBackPress() {
    console.info('Index onBackPres这是返回来了吗');
    AlertDialog.show(
      {
        title: '确定返回', // 标题
        message: '是否要返回?', // 内容
        autoCancel: false, // 点击遮障层时,是否关闭弹窗。
        alignment: DialogAlignment.Bottom, // 弹窗在竖直方向的对齐方式
        offset: { dx: 0, dy: -20 }, // 弹窗相对alignment位置的偏移量
        primaryButton: {
          value: '取消',
          action: () => {
            console.info('Callback when the first button is clicked');
            // ApplicationAbility.getInstance()?.quitApp();
          }
        },
        secondaryButton: {
          value: '确定',
          fontColor: '#D94838',
          action: () => {
            console.info('Callback when the second button is clicked这是哈哈啊');
            router.back()
          }
        },
        cancel: () => { // 点击遮障层关闭dialog时的回调
          console.info('Closed callbacks');
        }
      }
    )
    return true // 返回true表示页面自己处理返回逻辑,不进行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理
  }

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('Page7113HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
    }
    .height('100%')
    .width('100%')
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
分享
微博
QQ
微信
回复
2024-12-24 17:29:23
相关问题
HarmonyOS 如何监听物理返回
675浏览 • 1回复 待解决
HarmonyOS 物理返回键监听
782浏览 • 1回复 待解决
如何监听手机“返回物理按键?
11437浏览 • 2回复 已解决
HarmonyOS 监听手机物理返回
579浏览 • 1回复 待解决
HarmonyOS 系统返回如何拦截
703浏览 • 1回复 待解决
HarmonyOS 如何拦截UIAbility的返回
495浏览 • 1回复 待解决
HarmonyOS 弹窗中如何拦截返回
695浏览 • 1回复 待解决
HarmonyOS RN如何拦截返回事件
514浏览 • 1回复 待解决
HarmonyOS 怎么拦截返回键盘
1070浏览 • 1回复 待解决
HarmonyOS 在Page中如何拦截系统返回
611浏览 • 1回复 待解决
HarmonyOS UIAbility 侧滑时如何拦截返回
669浏览 • 1回复 待解决
webview拦截返回按钮。
1585浏览 • 1回复 待解决
HarmonyOS 返回及侧滑返回无法拦截事件
1324浏览 • 1回复 待解决
HarmonyOS Web组件拦截返回按钮
790浏览 • 1回复 待解决
HarmonyOS 拦截系统返回手势问题
1580浏览 • 1回复 待解决
HarmonyOS web组件拦截返回手势
640浏览 • 1回复 待解决