谷歌Play游戏成就解锁弹出窗口没有显示

Jac*_*ień 8 android google-play-services google-play-games

我正在使用开发人员文档中的这个简单方法解锁成就:

Games.Achievements.unlock(getApiClient(), "my_achievement_id");
Run Code Online (Sandbox Code Playgroud)

成就解锁,但没有弹出窗口显示.登录Google Play游戏时也没有弹出窗口 - 已连接.

Jac*_*ień 15

我一直在努力解决这个问题,这就是为什么决定在stackoverflow上分享它.我在开发人员的博客上描述了对此问题的简单修复.

这是简短的版本:

只需向要显示成就的布局添加视图,如下所示:

<FrameLayout
        android:id="@+id/gps_popup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp" />
Run Code Online (Sandbox Code Playgroud)

准备好布局后,您需要在Activity或Fragment中执行此操作:

Games.setViewForPopups(getApiClient(), findViewById(R.id.gps_popup));
Run Code Online (Sandbox Code Playgroud)

您必须确保您的GoogleApiClient已连接,否则您的应用将崩溃.

  • GoogleApiClient实际上是否必须连接?如果它被正确实例化但实际上没有连接怎么办?我不明白为什么连接应该对设置视图有任何影响. (2认同)
  • 指向您博客文章的链接似乎已损坏。 (2认同)

use*_*779 9

<FrameLayout
        android:id="@+id/gps_popup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp" />
Run Code Online (Sandbox Code Playgroud)

这与JacekKwiecień的答案相同

GamesClient gamesClient = Games.getGamesClient(MainActivity.this, GoogleSignIn.getLastSignedInAccount(context));
gamesClient.setViewForPopups(findViewById(R.id.gps_popup));
Run Code Online (Sandbox Code Playgroud)

这已更改,因为不推荐使用带有2个参数的setViewForPopups.


thi*_*olr 5

Jacek 和 user3782779 的答案对我不起作用,我必须执行以下操作:

GamesClient gamesClient = Games.getGamesClient(this, GoogleSignIn.getLastSignedInAccount(this));
gamesClient.setViewForPopups(findViewById(android.R.id.content));
gamesClient.setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
Run Code Online (Sandbox Code Playgroud)