You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

libGDX中Google Game Services弹窗如何显示?setViewForPopups调用后不显示

解决LibGDX中Google Play Games弹窗无法显示的问题

嘿,咱们来排查下你的问题——你代码里的核心问题在于:你创建了一个全新的空View,但这个View根本没被添加到Activity的视图层级里,Google Play Games的弹窗需要依附在一个已经挂载到界面上的可见容器才能正常显示。

具体修正方案:

  • 替换空View为Activity的根视图
    别再新建空View了,直接获取AndroidLauncher的根视图作为弹窗的依附容器。用下面的代码替换你原来的View view = new View(...)部分:

    // 获取Activity的根布局视图
    View rootView = AndroidLauncher.this.getWindow().getDecorView().getRootView();
    

    或者也可以用findViewById(android.R.id.content)来获取Activity的内容容器,效果是一样的。

  • 理解弹窗的依附逻辑
    Google Play Games的弹窗必须绑定到一个已经存在于界面上的View,空View因为没有被添加到布局中,所以弹窗没有地方可以渲染。用根视图就能保证弹窗有正确的“锚点”,从而正常显示出来。

修正后的完整代码:

private void signInSilently() {
    mGoogleSignInClient.silentSignIn().addOnCompleteListener(this, new OnCompleteListener<GoogleSignInAccount>() {
        @Override
        public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
            if (task.isSuccessful()) {
                GoogleSignInAccount signedInAccount = task.getResult();
                GamesClient gamesClient = Games.getGamesClient(AndroidLauncher.this, signedInAccount);
                
                // 获取Activity的根视图作为弹窗载体
                View rootView = AndroidLauncher.this.getWindow().getDecorView().getRootView();
                gamesClient.setGravityForPopups(Gravity.TOP);
                gamesClient.setViewForPopups(rootView);
                
                onConnected(task.getResult());
                Log.d(TAG, "signInSilently(): success");
            } else {
                onDisconnected();
                Log.d(TAG, "signInSilently(): failure", task.getException());
            }
        }
    });
}

另外再提两个额外的检查点:

  • 确保GoogleSignInAccount是有效的,gamesClient初始化没有抛出异常
  • 如果你的游戏是全屏模式(隐藏了状态栏/导航栏),可以暂时调整窗口属性,或者把弹窗绑定到游戏视图的父容器上,避免被游戏画面遮挡

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:49:42