2016-09-29 83 views
2

我需要實現這樣的功能:delphi/firemonkey:如何在Activity中實現回調?

[JavaSignature('android/app/Activity')] 
    JActivity = interface(JContextThemeWrapper) 
    ... 
    procedure onRequestPermissionsResult(requestCode: Integer; permissions: TJavaObjectArray<JString>; grantResults: TJavaArray<Integer>); cdecl; 
    .... 

,但如何做到這一點?這個函數只是接收事件,所以我必須覆蓋它,但我不知道該怎麼做。

+0

你在問錯誤的問題。你的問題主題是誤導。在Android中實現事件功能是通過Delphi版本的已發佈的偵聽器接口完成的,並在Androidapi.JNIBridge單元中從一個繼承自「TJavaLocal」的Delphi類中實現。 您正在詢問如何在「整個Delphi應用程序的基礎」的「Activity」中實現回調。 – blong

+0

感謝blong,你是對的,我只是更新了這個問題是更準確:) – loki

回答

2

要在您的FireMonkey應用程序的Activity中實現回調,您必須編寫一些Java代碼以繼承FireMonkey自己的本機活動子類。

這是相當繁瑣和充滿問題,並需要各種命令行「猴子的業務」,但我已經寫了一個不同的回調過程,onNewIntentmy Delphi XE7 article on supporting NFC tags(德爾福10西雅圖使這項工作可行,沒有Java活動子類)。我還編寫了Delphi XE5的onActivityResult回調函數the first version of my article on launching Android activities(Delphi XE6使得這個工作在沒有Java活動子類的情況下成爲可能)。

請務必與伴隨這些文章引用新的自定義活動的子類,如樣品進行更新Android清單模板文件:

<activity android:name="com.blong.test.NativeActivitySubclass" 
      ... 

祝你好運。這相當混亂,使調試非常困難。

+0

謝謝blong,我已經讀過你所有的博客,並觀看你的研討會:)感謝這我已經做了我自己的classes.dex。例如,我明白如何繼承任何類似textview的對象,但我不明白如何繼承FMXNativeActivity,因爲它將是delphi將創建它而不是我,所以它永遠不會用我自己的子類創建(或者我錯過了某些東西)。這部分我不太瞭解你的博客,如何開始主要活動與我自己的子類而不是默認FMXNativeActivity(因爲否則我的java代碼將是無用的,我猜) – loki

+0

好吧,如果你已經熟悉材料和過程,那麼你有你需要的所有信息。這兩篇文章涵蓋了所有需要的步驟(針對所討論的產品版本),並附有相應的樣本,顯示效果良好。 如果在那裏有什麼不清楚的地方,你需要在你提出的問題或你報告的問題上更具體。 – blong

+1

「我不明白如何繼承FMXNativeActivity,因爲這將是delphi誰將創建它不是我」 - >哦,實際上我看到一件事情沒有強調在文章中是需要改變的Android清單文件有活動子類將在應用程序啓動時創建。我已經相應地更新了我的答案。如果您發現此問題現在可以解決問題,請做適當的有用評論並標記適當的答案(這裏以及其他最近的問題)。 – blong