Android - 设置回可见时 admob 横幅崩溃

Android - admob banner crashes when setting back to visible

我在我的游戏顶部显示了一个 SMART BANNER,但只希望它显示在前端。

进入游戏后我调用:

GameMainActivity.mAdView.setVisibility (View.INVISIBLE);

这有效,并且游戏会一直持续到玩家死亡。然后我打电话:

GameMainActivity.mAdView.setVisibility (View.VISIBLE);

然后它崩溃了。还有比我在这里所做的更多的吗?

编辑:logcat 如下:

02-07 18:44:22.422 19564-19674/com.onesevenone.simples E/AndroidRuntime:致命异常:游戏线程 进程:com.onesevenone.simples,PID:19564 android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图。 在 android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6247) 在 android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:902) 在 android.view.ViewGroup.invalidateChild(ViewGroup.java:4637) 在 android.view.View.invalidateInternal(View.java:11690) 在 android.view.View.invalidate(View.java:11654) 在 android.view.View.setFlags(View.java:9616) 在 android.view.View.setVisibility(View.java:6663) 在 com.onesevenone.game.state.GameState.update(GameState.java:63) 在 com.onesevenone.simples.GameView.updateAndRender(游戏View.java:100) 在 com.onesevenone.simples.GameView.运行(游戏View.java:120) 在 java.lang.Thread.run(Thread.java:818)

您似乎是从非 UI 线程发出调用。您可以 运行 在 UI 线程上使用 runOnUiThread(Runnable action) 方法:

context.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            GameMainActivity.mAdView.setVisibility (View.VISIBLE);
        }
    });