有没有办法让 Fragment 无需通过 Activity 即可接收 Intent 数据?
Is there a way for a Fragment to receive Intent data without going through an Activity?
我来自 Unity3D 开发领域,对 Android 开发还很陌生。我正在尝试为 Unity Android 创建一个 NFC 插件。我按照 Twinsprite 提供的 this guide,了解如何通过扩展 UnityPlayerActivity
创建插件。使用 Twinsrpite 的代码,该插件启用 Android 的 NFC 前台调度系统,以便在我的应用程序处于前台时捕获 NFC Intent。
在我的研究中,我发现扩展 UnityPlayerActivity
是不受欢迎的,因为它会导致 Unity 项目中其他插件的依赖性出现很多问题。从那里我决定让我的插件像许多其他 Unity Android 插件一样扩展 Fragment
class。这样我的无头 Fragment
插件就可以利用片段生命周期的回调,而不会在 Unity 中引起问题。
我 运行 在修改代码以在 Fragment
上工作时遇到了问题。 Twinsprite 的代码依赖于 Activity
的 onNewIntent
回调,然后将 Intent
的数据传递到解析 NFC 消息的处理程序方法中。由于我正在编写代码以使用 Fragment
而不是 Activity
,因此我无法再访问 onNewIntent
回调,因此我无法再调用处理程序方法。如上所述,我不想扩展 UnityPlayerActivity
所以我留下了这个问题:
如何在不扩展 UnityPlayerActivity
的情况下从我的 Fragment
插件中接收来自我的 NFC Intent
的数据?
只需向您的 Fragment 添加一个方法,activity 就可以将新 Intent 传递给该方法。然后片段可以根据需要处理意图。
MyUnityFragment myUnityFragment;
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
myUnityFragment.newIntent(intent);
}
我决定走只扩展 UnityPlayerActivity
而不使用 Fragment
class 的路线。 Fragment
扩展插件的目的是避免必须更改 AndroidManifest.xml 因为我担心它会导致其他插件出现问题,即分析、Facebook 等。Intent
s 必须由 Activity
处理,所以我试图做的事情是不可能的。
我来自 Unity3D 开发领域,对 Android 开发还很陌生。我正在尝试为 Unity Android 创建一个 NFC 插件。我按照 Twinsprite 提供的 this guide,了解如何通过扩展 UnityPlayerActivity
创建插件。使用 Twinsrpite 的代码,该插件启用 Android 的 NFC 前台调度系统,以便在我的应用程序处于前台时捕获 NFC Intent。
在我的研究中,我发现扩展 UnityPlayerActivity
是不受欢迎的,因为它会导致 Unity 项目中其他插件的依赖性出现很多问题。从那里我决定让我的插件像许多其他 Unity Android 插件一样扩展 Fragment
class。这样我的无头 Fragment
插件就可以利用片段生命周期的回调,而不会在 Unity 中引起问题。
我 运行 在修改代码以在 Fragment
上工作时遇到了问题。 Twinsprite 的代码依赖于 Activity
的 onNewIntent
回调,然后将 Intent
的数据传递到解析 NFC 消息的处理程序方法中。由于我正在编写代码以使用 Fragment
而不是 Activity
,因此我无法再访问 onNewIntent
回调,因此我无法再调用处理程序方法。如上所述,我不想扩展 UnityPlayerActivity
所以我留下了这个问题:
如何在不扩展 UnityPlayerActivity
的情况下从我的 Fragment
插件中接收来自我的 NFC Intent
的数据?
只需向您的 Fragment 添加一个方法,activity 就可以将新 Intent 传递给该方法。然后片段可以根据需要处理意图。
MyUnityFragment myUnityFragment;
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
myUnityFragment.newIntent(intent);
}
我决定走只扩展 UnityPlayerActivity
而不使用 Fragment
class 的路线。 Fragment
扩展插件的目的是避免必须更改 AndroidManifest.xml 因为我担心它会导致其他插件出现问题,即分析、Facebook 等。Intent
s 必须由 Activity
处理,所以我试图做的事情是不可能的。