我想在我的Android应用中显示全屏横幅.
在onCreate
我称之为这个功能:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); showInterstitial(); }
我的功能:
private void showInterstitial() { interstitialAd = new InterstitialAd(this); interstitialAd.setAdUnitId(getString(R.string.ad_banner_id)); interstitialAd.show(); Toast.makeText(this, "Ad will load", Toast.LENGTH_SHORT).show(); }
我的应用程序将崩溃此消息:
引起:java.lang.IllegalStateException:必须在调用show之前在InterstitialAd上设置广告单元ID.
但是我在节目之前设置了广告ID,不是吗?
您没有要求loadAd()
使用interstitialAd.插页广告应在您展示广告之前加载.
interstitialAd.loadAd(adRequest);
你也应该在打电话之前检查它是否已加载show()
.它可能无法立即使用,您可能希望在调用show之前提前加载它.
if(mInterstitial.isLoaded()){ mInterstitial.show(); AdRequest adRequest = new AdRequest.Builder().build(); mInterstitial.loadAd(adRequest); //optionally load again if you plan to show another one }
可能的实施(改变它以满足您的要求)
所以基本上可以进入以下内容 onCreate()
interstitialAd = new InterstitialAd(this); interstitialAd.setAdUnitId(getString(R.string.ad_banner_id)); AdRequest adRequest = new AdRequest.Builder().build(); interstitialAd.loadAd(adRequest); Toast.makeText(this, "Ad will load", Toast.LENGTH_SHORT).show();
并showInterstitial()
成为这个
private void showInterstitial() { if(mInterstitial.isLoaded()){ mInterstitial.show(); //optionally load again if you plan to show another one later AdRequest adRequest = new AdRequest.Builder().build(); mInterstitial.loadAd(adRequest); } }
注意:showInterstitial()
如果要显示插页式广告,请致电.但是,在打电话后不是立即loadAd()
.如果网络延迟或广告内容比正常情况重,则需要花费一些时间才能加载一个内部广告,您可能会在几分之一秒内错过.
此外,这里是正确实施Admob Intersitials的文档.