【问题标题】:Android backbutton doesn't work in Delphi XE5/XE6Android 后退按钮在 Delphi XE5/XE6 中不起作用
【发布时间】:2014-08-22 20:56:55
【问题描述】:

通常无需编写 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则略有不同。

更新:

我找到了解决问题的方法。但是我的delphi仍然反应很奇怪。当我创建一个新项目并添加以前项目中的文件时,我可以使用 android 后退按钮返回。但是一旦我再次保存项目然后尝试运行它,它就会停止工作。

【问题讨论】:

  • 这段代码可以在原版应用程序中使用吗?
  • 是的,确实如此。此外,当您查找 delphi android 后退按钮时,您会得到此代码。对于其他人,它确实有效
  • 因此,问题中的代码在原版应用程序中的行为符合预期,但在您的应用程序中却没有。此时问题完全与您的应用程序中的代码有关,而不是问题中的代码。您应用中的代码只有您自己可以看到。我们能帮你什么吗?是时候制作 SSCCE 了。
  • 好吧,我不知道问题是什么/可能是什么。调试也无济于事!我希望有人遇到同样的问题并解决它!
  • 与其通过连续投票来攻击@Peter 和我自己,不如听从我们的建议。我们无法提供帮助的原因是您尚未提供描述、重现和隔离问题所需的信息。彼得和我说同样的话并不是巧合。您需要做的就是制作 SSCCE。当你这样做时,我预测你最终会自己解决问题。我不明白你为什么寻求帮助,然后忽略了给你的声音帮助。

标签: android delphi back-button delphi-xe5 delphi-xe6


【解决方案1】:

后退按钮在android框架中有一个特殊的功能——onBackPressed()。我不知道它是否被移植到 Delphi,但我认为是这样。它不会通过那个 API 实现

【讨论】:

  • 是的,它应该在 Delphi 中工作,奇怪的是在我的另一个项目中它确实工作。问题是我不需要为此做任何事情
【解决方案2】:

在新目录中创建一个新项目然后添加所有文件后,问题就消失了!问题似乎出在 de dproj 文件中。我也试过找到它,但它对我来说太大了。

【讨论】:

    【解决方案3】:

    您需要在FormKeyUp 过程中捕获“返回”键,以便在您执行操作后它不会传递给操作系统:

    if (Key = vkHardwareBack) then
      begin
        Key := 0;
        { Do something else }
      end;
    

    【讨论】:

      猜你喜欢
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 2014-06-27
      相关资源
      最近更新 更多