【发布时间】:2013-09-18 22:55:27
【问题描述】:
在 android/Java 中我会这样做:
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);
并得到结果:
@Override public void onActivityResult(int reqCode, int resultCode, Intent data)
在 Delphi 中,我有第一部分的等价物:
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_PICK);
Intent.setType(TJContactsContract_Contacts.JavaClass.CONTENT_TYPE);
MainActivity.startActivityForResult(Intent,PICK_CONTACT);
但在 MainActivity 下查看时,我没有看到“onActivityResult”回调。我看到了一个 JFragment,但似乎没有在正确的位置获取它,而且我在示例代码、在线或源代码中没有看到任何示例。
【问题讨论】:
-
我在
Androidapi.JNI.App.pas中看到几个以startActivityForResult结尾的条目。我还不够熟悉,无法说出它们中的任何一个是否可以满足您的需要(因此是评论而不是答案)。有什么帮助吗? -
@Ken startActivityForResult 是您调用启动活动的方法。它就在问题中。但是询问者正在寻找一种方法来实现 onActivityResult 回调以接收结果。
-
什么是 MainActivity?它是 Activity 的预装实现吗?它是否公开事件。 Delphi 开发人员如何包装原生 Android API?您是否希望自己从 Activity 派生?还是他们派生出一个类来为您覆盖所有虚拟 onXXX 方法和表面事件?
-
MainActivity 是一个函数调用,用于获取应用程序的 Activity。看看它的接口,它与您在 PUBLIC 部分中看到的非常匹配(我没有针对每个函数查看它)查看 android 文档的活动(几分钟前才意识到)。我猜你必须添加一个重载成员,然后从中派生应用程序,但我对 XE 的 Android 部分的工作方式还不够熟悉要做的事情。我将阅读更多的源 tmw 来尝试解决这个问题,只是看起来应该更简单
-
顺便说一句,这无法完成,但我被告知他们正在努力从活动中获取结果。任何未由 embarcadero 专门编码的事件均不可用。所以所有的方法和函数都在那里,但事件却没有,这就是让许多 XE5 android 编码器感到沮丧的原因。
标签: android delphi delphi-xe5