我已经在我的 Android 应用程序中将一些 Google Play 游戏服务功能作为单独的 Activity 实现,我现在正尝试将我的代码重写为一个 (Action Bar Sherlock) fragment 。我在 fragment 中使用提供的 GameHelper 代码。
自动登录工作正常。用户发起的登录失败,因为 GameHelper 中的 StartResolutionForResult 调用返回到 Activity 的 onActivityResult 而不是 fragment 。我已经使用 Log.D 验证了所有这些。我对此的理解是有限的——我应该怎样做才能解决这个问题?我尝试传递不同的上下文,但 StartResolutionForResult 似乎只接受一个 Activity 作为其上下文。
最佳答案
Google Play 游戏服务 API 应该与 Activity 的生命周期相关联,而不是 Fragment 的生命周期。如果您的游戏逻辑在 Fragment 中,您可以在 Activity 上实现 onActivityResult 并从那里调用您的 Fragment。看看我们的Type A Number Challenge示例,除了是一个非常令人兴奋和令人上瘾的游戏 之外,它还演示了如何处理 Fragments。 Type A Number 中的每个屏幕都是一个 fragment ,它们根据需要与 Activity 进行通信。
在这种特殊情况下,与游戏 API 的所有交互都是由 Activity 进行的。但是,您也可以让 Activity 将 GamesClient
对象交给 Fragment,以便它可以实现自己的逻辑。
在所有情况下,切记不要在 Fragment 中保留对 GamesClient
的持久引用超过您需要的时间。最好在需要时从 Activity
(例如通过接口(interface))查询它。这是为了防止它在 Activity 的生命周期中泄漏。
关于android - 从 fragment 调用 Google Play 游戏服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16974527/