2017-02-17 68 views
0

当我显示Admob插页式广告时,它显示正常,并且我注册了侦听器以捕获onAdClosed事件,但问题是我实际上无法从与我的UI交互的事件中执行任何操作,因为插页式广告已全部关闭。Admob插页式广告关闭了现有活动

我创建这样的间隙:

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

你想要存档?您是否阅读过关于“onAdClosed”的描述 - 当用户点击广告后即将返回到应用程序时调用。' – Divers

+0

@Divers - 我想要实现的功能是添加插页式广告,而不会搞乱现有的我已经拥有精致的碎片系统。因此,理想情况下,我希望展示插页式广告,不会暂停或关闭活动,也不会销毁任何已存在的片段。如果我不能这样做,那么我至少需要在广告关闭后发生回调,但用户已经返回到应用程序,所以我可以在不崩溃的情况下更新UI。 – user3690202

回答

0

所以,答案并不理想,但它的工作原理。

您更新onAdClosed()中的数据模型,但不更新与UI相关的任何内容。设置一个标志来表明广告已关闭或您需要做的任何事情。

然后在主Activity上的onResume()中更新UI。您可以检查onAdClosed()或其他任何标志,然后更新GUI以反映新状态。

0

你可能会完成当前活动,您都出现了间隙,然后依靠间质性回调移动到下一个页面或屏幕为此事之前

这是不好的做法,因为你不希望你的应用程序流量依靠广告回调。有可能的情况,其广告不能显示在所有

你需要做的就是调用

loadNextPage(); 

您展示的广告之前。当广告将显示它将简单地通过应用程序屏幕,如果有广告,它会简单地接管,否则它不会影响应用程序