Google Play Games achievement unlocked popup not showing

I'm unlocking achievement using this simple method from developers docs:

Games.Achievements.unlock(getApiClient(), "my_achievement_id");

Achievement unlocks, but no popup shows up. There is also no popup when logged in to Google Play Games - which is connected.


Just add a view to the layouts you want to display achievements on like this:

<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" />

When you have your layout ready you neet to execute this inside your Activity or Fragment:

Games.setViewForPopups(getApiClient(), findViewById(R.id.gps_popup));

You have to be sure, that your GoogleApiClient is connected though, otherwise your app will crash.


<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" />

This is the same in Jacek Kwiecień answer

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

This changed because setViewForPopups with 2 parameters is deprecated.


Jacek and user3782779 answers didn't work for me, I had to do the following:

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