当我显示Admob插页式广告时,它显示正常,我已经注册了一个侦听器来捕获onAdClosed事件,但问题是我实际上无法执行任何与我的UI交互的事件,因为插页式广告已关闭它所有。
我正在创建这样的插页式广告:
storyAd = new InterstitialAd(this);
storyAd.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxx");
storyAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
super.onAdClosed();
storyAd.loadAd(buildAdRequest());
if (prevMusicPlaying) {
toggleAudio();
}
loadNextPage();
}
});
storyAd.loadAd(buildAdRequest());
我的清单中也有它:
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
loadNextPage()调用崩溃,因为它试图创建一个新片段并将其添加到我的活动中,但由于插页式广告暂停了活动,因此无法执行此操作。所以我得到了这个例外:
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1328)
at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1346)
at android.app.FragmentManagerImpl.popBackStack(FragmentManager.java:488)
我如何才能使InterstitialAd不会以任何方式干扰现有用户界面。花了很长时间才能让现有的UI处理各种活动/片段陷阱。
答案 0 :(得分:1)
您可能在显示插页式广告之前完成当前活动,然后依靠插页式广告回调移至下一页或屏幕
这是不好的做法,因为您不希望自己的应用流程依赖广告回调。可能存在广告无法展示的情景
您需要做的是致电
loadNextPage();
在您展示广告之前。当广告显示时,它会简单地通过应用屏幕,如果有广告,它将会接管,否则不会影响应用
答案 1 :(得分:0)
所以,答案不太理想,但确实有效。
您可以在onAdClosed()中更新数据模型,但不能更新与UI相关的任何内容。设置一个标记,表示广告已关闭或您需要执行的操作。
然后在主Activity上的onResume()中,更新UI。您可以从onAdClosed()或其他任何内容检查标志,然后更新GUI以反映新状态。