6

请按照以下步骤操作:

  1. 创建新的Firemonkey Moblie Application
  2. TGeustureManager组件添加到表单
  3. TButton向表单添加 2 个组件

    • Button1.Text: "Button1: 做点什么..."
    • Button2.Text: "Button2: 退出应用程序..."

    应用程序应如下所示

  4. 双击 Button2 组件并为OnClickEvent 编写以下代码:

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      if MessageDlg('Are you sure you want to Exit?', TMsgDlgType.mtWarning,
              [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], 0) = mrYes then
        SharedActivity.finish;
    end;
    
  5. 在调试模式下运行应用程序。
  6. 在设备上,单击按钮 2,然后单击是弹出消息。会出现异常:

    在此处输入图像描述

为什么会引发此异常?

我认为它与未使用的TGeustureManager组件有关。但不,它不是

  1. 如果打开LocationDelphi xe5自带的Demo工程。
  2. TButton组件添加到Location标签,如下图所示: 在此处输入图像描述
  3. 将与上面相同的代码添加到OnClick事件。
  4. 运行应用程序,然后单击 Button5,您将得到相同的异常。

这是我应该报告的错误吗?还是我做错了什么?

4

5 回答 5

1

可能您正在杀死正在运行的活动,在其执行流程耗尽之前,从而导致问题。就像在表单方法中释放表单一样......

如果更换会发生什么:

SharedActivity.finish

和:

uses
  FMX.Helpers.Android;
...
CallOnUIThread(procedure begin SharedActivity.finish end);

[凭记忆输入,所以可能需要一些调整]

于 2013-11-13T10:48:38.813 回答
1

我已经就这个问题联系了 Embarcadero。

他们说这是因为 TApplication.Terminate 尚未在 FireMonkey 移动平台中实现。

他们打开一张票以在下一个热修复中实施 TApplication.Terminate。

让我们希望这不会花很长时间。

于 2013-12-04T16:04:36.037 回答
0

我在一个非常简单的位置测试应用程序上遇到了同样的错误,它发生在在标签上设置文本时。标签设置为自动大小,当我将其更改为静态大小时,错误消失了。

Delphi XE6,FMX.TextLayout.GPU 中的第 681 行

我正在使用三星 S4 手机。

procedure TForm_StayTogether.LocationSensor1LocationChanged(Sender: TObject;
  const OldLocation, NewLocation: TLocationCoord2D);
begin
  DistLabel.Text:= FloatToStr(LocationSensor1.Distance);
  AccLabel.Text:= FloatToStr(LocationSensor1.Accuracy);
  LatLabel.Text:= FloatToStr(NewLocation.Latitude);
  LonLabel.Text:= FloatToStr(NewLocation.Longitude);
end;
于 2014-08-31T00:30:02.143 回答
0

如果您只想关闭应用程序联合国可以试试这个:

case MessageDlg('Close Application?', System.UITypes.TMsgDlgType.mtInformation,
    [
      System.UITypes.TMsgDlgBtn.mbYes,
      System.UITypes.TMsgDlgBtn.mbNo
    ], 0) of
    { Detect which button was pushed and show a different message }
    mrNo:
      showmessage('');
    mrYes:
      halt;
  end;
于 2013-11-22T15:40:03.623 回答
-4

我刚刚经历过类似的事情,一个非常小的应用程序,每次我退出 Android 设备上的应用程序(在我的情况下为 Galaxy Note 2)时,都会给出同样的错误(Segmentation fault 11)。

值得一提的是,当我转到我之前放在表格上的样式手册并清除它时,问题就消失了。我想我之前已经从另一个测试单元复制了该样式书。

麦克风

于 2014-07-13T14:24:35.457 回答