2017-02-17 72 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(); 

您展示的廣告之前。當廣告將顯示它將簡單地通過應用程序屏幕,如果有廣告,它會簡單地接管,否則它不會影響應用程序