通常无需编写Android后退按钮功能,并让您回到上一个表单。在我的应用程序中,我正在努力而不是返回它关闭应用程序。我也尝试通过代码处理后退按钮,但这也没有用,它忽略了代码!
以下是我用来处理后退按钮的代码:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
var
FService: IFMXVirtualKeyboardService;
begin
if Key = vkHardwareBack then
begin
TPlatformServices.Current.SupportsPlatformService
(IFMXVirtualKeyboardService, IInterface(FService));
if (FService <> nil) and (TVirtualKeyboardState.Visible
in FService.VirtualKeyBoardState) then
begin
// Back button pressed, keyboard visible, so do nothing...
end
else
begin
// Back button pressed, keyboard not visible or not supported on this platform
close;
end;
end;
end;
我曾经使用Delphi XE5,现在我使用XE6并希望问题得到解决,但遗憾的是没有。上面的代码也适用于Delphi XE6版本,对于XE5,它略有不同。
更新
我找到了解决问题的方法。但我的德尔福仍然反应很奇怪。当我创建一个新项目并添加我之前项目中的文件时,我可以使用android后退按钮返回。但是,一旦我再次保存项目然后尝试运行它,它就会停止工作。
答案 0 :(得分:0)
后退按钮在android framework- onBackPressed()中有一个特殊功能。我不知道它是否被移植到Delphi,但我认为是这样。它不会通过该API
答案 1 :(得分:0)
在新目录中创建一个新项目,然后在项目中添加所有文件后,问题就消失了!这个问题好像出现在de dproj文件中。我也尝试过找到它,但找到它对我来说很重要。
答案 2 :(得分:-1)
您需要在FormKeyUp
程序中捕获“后退”按键,以便在您对其执行操作后不会将其传递给操作系统:
if (Key = vkHardwareBack) then
begin
Key := 0;
{ Do something else }
end;