HarmonyOS 鸿蒙Next 2in1标题栏上的关闭按钮,怎么实现点击关闭按钮时,打开弹窗阻止退出应用,通过用户弹窗确认是否退出应用?【跪求】
HarmonyOS 鸿蒙Next 2in1标题栏上的关闭按钮,怎么实现点击关闭按钮时,打开弹窗阻止退出应用,通过用户弹窗确认是否退出应用?【跪求】 应该在哪个生命周期函数进行阻止应用窗口关闭的操作啊?
ps:关闭按钮就是图中这个关闭按钮
更多关于HarmonyOS 鸿蒙Next 2in1标题栏上的关闭按钮,怎么实现点击关闭按钮时,打开弹窗阻止退出应用,通过用户弹窗确认是否退出应用?【跪求】的实战教程也可以访问 https://www.itying.com/category-93-b0.html
要在应用关闭之前需要加确认关闭防呆吗,
配置权限,
'requestPermissions': [{
'name': 'ohos.permission.PREPARE_APP_TERMINATE'
}],
onPrepareToTerminate(): boolean {
console.info('onBackPress:');
promptAction.showDialog({
title: "提示",
message: "确认退出?",
buttons: [
{
text: "取消",
color: "#000000"
},
{
text: "退出",
color: "#555555"
}
]
}).then((data: ShowDialogSuccessResponse) => {
console.info('showDialog success, click button: ' + data.index);
if (data.index == 1) {
this.context.terminateSelf()
}
})
return true;
}
更多关于HarmonyOS 鸿蒙Next 2in1标题栏上的关闭按钮,怎么实现点击关闭按钮时,打开弹窗阻止退出应用,通过用户弹窗确认是否退出应用?【跪求】的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
是不是这种效果,
打开弹窗
提示 确定要关闭吗?
- 取消
- 确认
点击确认后无操作。
点击取消后弹出新窗口
新弹窗 这是点击取消后弹出的新窗口
- 确定
是的!!!谢谢大佬 就是这个,
不客气~
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
import promptAction from '@ohos.promptAction';
@Entry
@Component
struct Index {
build() {
Column() {
Button('打开弹窗')
.onClick(() => {
promptAction.showDialog({
title: '提示',
message: '确定要关闭吗?',
buttons: [
{ text: '取消', color: '#000000' },
{ text: '确认', color: '#0000FF' }
]
}).then((data) => {
if (data.index === 0) {
promptAction.showDialog({
title: '新弹窗',
message: '这是点击取消后弹出的新窗口',
buttons: [{ text: '确定', color: '#0000FF' }]
});
} else if (data.index === 1) {
}
})
})
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
}
楼主可以用时钟周期事件,比如说有三个按钮,一个按钮确定(退出),一个按钮取消,另一个按钮时钟周期定时跳转
时钟周期事件怎么结合这个关闭按钮用呀?
我好像没表达清楚 我的疑惑是点击这个关闭按钮怎么打开一个弹窗 而不是直接关闭当前应用。因为这个关闭按钮是系统自带的。
楼主好,你可以用自定义弹窗 (CustomDialog)
在HarmonyOS中,可以通过使用 Ability
的 onBackPressed
方法来拦截点击关闭按钮的操作,并弹出确认对话框。具体步骤如下:
-
重写
onBackPressed
方法:在你的Ability
子类中,重写onBackPressed
方法,以拦截返回或关闭按钮的点击事件。 -
显示确认弹窗:在
onBackPressed
方法中,使用CommonDialog
或PromptDialog
显示一个确认弹窗,询问用户是否确定退出应用。 -
处理用户选择:根据用户的确认结果,决定是否继续退出应用。如果用户确认退出,调用
terminateAbility()
方法关闭应用;如果用户取消,则不执行任何操作。
示例代码片段如下:
import common from '@ohos.app.ability.common';
import prompt from '@ohos.prompt';
export default class MainAbility extends common.Ability {
onBackPressed() {
prompt.showDialog({
message: '确认退出应用吗?',
buttons: [
{ text: '取消', color: '#000000' },
{ text: '确认', color: '#FF0000' }
]
}).then((data) => {
if (data.index === 1) { // 用户点击了确认按钮
this.terminateAbility();
}
}).catch((err) => {
console.error(`Failed to show dialog, code is ${err.code}, message is ${err.message}`);
});
}
}
这样,当用户点击关闭按钮时,会先弹出确认弹窗,用户确认后才退出应用。