有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java应用程序在提交分数排行榜Google Play时崩溃

我的安卓应用程序有一些问题

我在排行榜上使用google play games服务。我导入所有库,我做所有需要的

在我的主要活动中,我遵循Google Developer文档here,并使用:

mClient.connect();

为连接和工作

在游戏结束时,我尝试提交分数。我在论坛上看到,我可以将McClient设置为静态,以便在其他活动中使用它。所以我调用onCreate:

Games.Leaderboards.submitScore(MainActivity.mClient, getString(R.string.class_1), myscore);

但当分数提交时,应用程序崩溃。我有以下错误:

12-14 15:37:24.856: E/AndroidRuntime(19613): FATAL EXCEPTION: main
12-14 15:37:24.856: E/AndroidRuntime(19613): java.lang.RuntimeException: Unable to resume activity {com.test.app/com.test.app.Result}: java.lang.IllegalStateException: GoogleApiClient must be connected.
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.ActivityThread.performResumeActivity(ActivityThread.java:2141)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.ActivityThread.handleResumeActivity(ActivityThread.java:2156)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1680)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.ActivityThread.access$1500(ActivityThread.java:121)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.os.Handler.dispatchMessage(Handler.java:99)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.os.Looper.loop(Looper.java:130)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.ActivityThread.main(ActivityThread.java:3701)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at java.lang.reflect.Method.invokeNative(Native Method)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at java.lang.reflect.Method.invoke(Method.java:507)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:624)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at dalvik.system.NativeStart.main(Native Method)
12-14 15:37:24.856: E/AndroidRuntime(19613): Caused by: java.lang.IllegalStateException: GoogleApiClient must be connected.
12-14 15:37:24.856: E/AndroidRuntime(19613):    at com.google.安卓.gms.common.internal.o.a(Unknown Source)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at com.google.安卓.gms.games.Games.c(Unknown Source)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at com.google.安卓.gms.games.internal.api.LeaderboardsImpl.submitScore(Unknown Source)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at com.google.安卓.gms.games.internal.api.LeaderboardsImpl.submitScore(Unknown Source)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at com.test.app.Result.onResume(Result.java:129)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.Activity.performResume(Activity.java:3832)
12-14 15:37:24.856: E/AndroidRuntime(19613):    at 安卓.app.ActivityThread.performResumeActivity(ActivityThread.java:2131)
12-14 15:37:24.856: E/AndroidRuntime(19613):    ... 12 more

开始时,它写“GoogleAppClient必须连接”,但“McClient”已连接。 因此,我也尝试在MainActivity中提交分数,但静态中没有mClient,但应用程序也会崩溃


共 (1) 个答案

  1. # 1 楼答案

    管理GoogleAPI客户端的最佳实践是让每个活动都保持自己的客户端状态。有关更详细的讨论,请参见此问题:Access google plus client from multiple activities

    用户体验将在“主活动”上登录,然后在游戏结束时的活动中检查客户端。isConnected()(如果未连接,则调用connect),然后在连接后提交分数。这样,您将确保在调用API之前拥有有效的客户端