【发布时间】:2017-09-27 07:40:34
【问题描述】:
我来自 Unity3D 开发领域,对 Android 开发还很陌生。我正在尝试为 Unity Android 创建一个 NFC 插件。我关注了 Twinsprite 提供的 this guide,了解如何通过扩展 UnityPlayerActivity 创建插件。使用 Twinsrpite 的代码,该插件启用 Android 的 NFC 前台调度系统,以便在我的应用程序处于前台时捕获 NFC Intent。
在我的研究中,我发现扩展 UnityPlayerActivity 是不受欢迎的,因为它会导致 Unity 项目中其他插件的依赖项出现很多问题。从那里我决定让我的插件像许多其他 Unity Android 插件一样扩展Fragment 类。这样,我的 headless Fragment 插件可以利用 Fragment Lifecycle 的回调,而不会在 Unity 中引起问题。
不过,我在修改代码以在 Fragment 上工作时遇到了问题。 Twinsprite 的代码依赖于Activity 的onNewIntent 回调,然后将Intent 的数据传递给解析NFC 消息的处理程序方法。由于我正在编写代码以使用Fragment 而不是Activity,因此我不再有权访问onNewIntent 回调,因此我无法再调用处理程序方法。如上所述,我想远离扩展UnityPlayerActivity,所以我留下了这个问题:
如何在不扩展 UnityPlayerActivity 的情况下从我的 Fragment 插件中接收来自我的 NFC Intent 的数据?
【问题讨论】:
-
片段必须托管在 Activity 中。它们不是独立的组件
-
@Kuffs 我现在没有代码,但我让我的片段通过使用
FragmentManager类将自己添加到UnityPlayerActivity的状态。我通过在 Unity 中调用静态方法来创建我的插件对象来做到这一点。
标签: android android-fragments unity3d android-intent nfc