android - 从 fragment 调用 Google Play 游戏服务

标签 android android-fragments google-play-games

我已经在我的 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/

相关文章:

android - 在 Android ListView 中播放视频

android - CardView底部边框在ScrollView android内部被切断

Android:无法使用 Google Maps Fragment 进行共享元素转换

java - 为 fragment 中的 TextView 设置语言环境

android - 我无法理解如何实现 "Result Callback"。有人能指出我正确的方向吗?

java - 将项目添加到资源文件

安卓 :How to getText from Edittext in side ListView?

java - 保留 fragment 数据

android - Alpha/Beta 测试使用 30 个精选天?

java - 更改了 android 项目中的包名称,现在出现 noclassdeffound 错误