2013-11-09 171 views
4

請按照下列步驟操作:分割類故障(11)

  1. 新建Firemonkey Moblie Application
  2. 添加TGeustureManager組件到窗體
  3. 添加2個TButton組件添加到窗體

    • Button1.Text:「Button1:做點什麼...」
    • Button2.Text:「Butt ON2:退出應用程序...」

    The application should appear like this

  4. 上Button2的組件雙擊寫下面的代碼OnClick事件:

    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,然後單擊yes以彈出消息。例外會出現:

    enter image description here

爲什麼此異常長大的嗎?我認爲這與未使用的TGeustureManager組件有關。但是,沒有它不

  1. 如果打開自帶的德爾福xe5的Location示範項目。
  2. 添加TButton組件Location標籤如下面的圖像中: enter image description here
  3. 添加相同的代碼如上到OnClick事件。
  4. 運行該應用程序,然後單擊Button5,您將得到相同的異常。

這是我應該報告的錯誤嗎?或者我做錯了什麼?

+0

我到處都是一樣的異常,與終止我的應用程序無關。傷心我找不到有關它的很多信息。只發生在不是Windows的Firemonkey上。 Windows工作正常,所有其他人失敗。其中一些我想到了(例如我需要使用泛型'TList <>'而不是舊的'TList'),但現在當解析文件時這個XSuperObject庫會這樣做(這是一個格式正確的JSON文件正確的位置)。 –

回答

1

可能是在執行流程耗盡之前,您正在執行正在運行的活動,從而導致問題。就像釋放表單方法中的表單一樣。

如果更換,會發生什麼:

SharedActivity.finish

有:

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

[從內存類型,因此可能需要一些調整]

+0

感謝Blong的回覆。 我找不到有關CallOnUIThread的文檔。並且您發佈的代碼不起作用。 你能詳細解答你的答案嗎? –

+0

當你說「不工作」,你的意思是不編譯,或不改善運行時的情況? CallOnUIThread,你可以檢查名字被引用的單位的語法。是的,它沒有記錄。除了來源。我認爲你有。 – blong

+0

但現在想想,也許在不同的線程上運行相同的調用不會改善問題。你需要推遲電話,就像Release在VCL領域一樣。我會更多地考慮。 – blong

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; 
+1

謝謝@ user193149,我正在尋找爲什麼會引發此異常。無論如何,按照你的方式,引發同樣的例外。 –

0

我已聯繫Embarcadero解決此問題。

他們說這是因爲TApplication.Terminate還沒有在FireMonkey平臺上實現移動。

他們打開一張票來實施TApplication.Terminate在nex hot fix中。

讓我們希望不會過時。

+0

Quality Central的哪個發行編號? – Ravaut123

+0

病例號:00361951 –

-4

我剛剛經歷了一些類似的事情,每次我退出Android設備上的應用程序(我的情況是Galaxy Note 2)時,都會有一個小代碼給出同樣的錯誤(分段錯誤11)。

對於什麼是值得的,當我去了之前放在窗體上的Stylebook並清除它時,問題就消失了。我想我早先已經從另一個測試單元複製了Stylebook。

邁克

0

我有一個非常簡單的定位測試應用了同樣的錯誤,將其設置在標籤上的文字時發生的。標籤被設置爲自動調整大小,當我將其更改爲靜態大小時,錯誤消失。

德爾福XE6,在FMX.TextLayout.GPU

我用的是三星S4手機681。

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;