如何让程序在按了 Android 的 Back 键后不关闭当前 From 或者不 APP 退出

本文介绍如何在Delphi FireMonkey框架下开发的Android应用中拦截手机的Back按键操作,避免默认行为导致的应用退出,并通过修改Form的OnKeyUp事件来实现自定义逻辑。

安卓底下,Delphi FireMonkey 做的 Android APP,默认情况下,按下手机的 Back 键,会关闭当前 Form。如果这个 Form 是主 Form 则整个 APP 退出。

本来,Form 有一个 OnCloseQuery 事件,这个事件会在一个 Form 被关闭的时候触发,该事件方法大概是这样的:

procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

在该事件方法里面,将 CanClose := False;就应该不会关闭这个 Form。

经过测试,这个代码在 Windows 底下有效,在 Android 下面无效。

网上搜索了一下,应该是拦截 Form 的 KeyUp 事件:

procedure TForm2.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  Key := 0; //这样就不会关闭这个 Form
end;

当然了,不能随便什么输入,都变成 Key := 0。所以这里需要加上一个判断:

if Key = vkHardwareBack then


到这里,我们可以在 Form 的 OnKeyUp 事件方法里面,加上代码,判断用户是否按了 Back 键,如果是,则如果我们不想要这个 Form 关闭,则设置 Key := 0;

搞定。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值