2016-11-29 101 views
0

这是我的清单文件:显示按下后退按钮上的插页式广告?

<activity 
     android:screenOrientation="portrait" 
     android:name="com.google.android.gms.ads.AdActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
     android:theme="@android:style/Theme.Translucent" /> 

这是我的活动:

@Override 
public void onBackPressed() { 
    InterstitialAd interstitialAd= new InterstitialAd(this); 
    interstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen)); 
    AdRequest adRequest = new AdRequest.Builder().build(); 
    interstitialAd.loadAd(adRequest); 

    interstitialAd.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 

      if (interstitialAd.isLoaded()) { 
       interstitialAd.show(); 
      } 

     } 

     @Override 
     public void onAdClosed() { 
      super.onAdClosed(); 
      finish(); 

     } 
    }); 

} 

我收到的广告屏幕只有2-3倍,而按回button.So,我怎样才能解决它,在每个后退按钮上按下。

+0

您可以在onCreate()事件中准备广告,并将其呈现在onBackPressed()事件中。广告准备工作需要一定的时间,所以如果您在onBackPressed()时准备广告,那么广告在当时就没有准备好了。 –

回答

10

试试这个

InterstitialAd interstitialAd = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_blue); 

     interstitialAd= new InterstitialAd(this); 
     interstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen)); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     interstitialAd.loadAd(adRequest); 

    } 


    @Override 
    public void onBackPressed() { 
    if (interstitialAd.isLoaded()) { 
     interstitialAd.show(); 
     interstitialAd.setAdListener(new AdListener() { 
      @Override 
      public void onAdClosed() { 
       super.onAdClosed(); 
       finish(); 
      } 
     }); 
     }else{ 
      super.onBackPressed(); 
     } 

    } 
+0

我使用了你的代码...但是有时候广告已经加载,有时候不是...是否强制所有时间在interstitialAd加载时都可以加载? –

+0

当然,如果广告未加载/可用,我们如何显示广告? – Max

0

如果您在onStart/onResume中添加了相同的代码,请将其删除或删除onBackPressed中的代码。

因为当ActivityB占据前景时,ActivityA处于onPause和onStop状态。

当ActivityA返回时(当从活动B返回按下时),它将获得onStart,然后它调用onResume(Activity A)。

0

问题与你的代码是你保持interstetial广告加载,并同时显示在onback机,装载interstetial增加需要时间,有时它也无法加载,当它无法加载广告,或者如果没有广告在AdMob广告的情况不会显示

更好的是在onCreate方法加载插页式广告,并将它们显示在后面为max在他的回答表明

,并在你的代码将如何用户从屏幕退出广告不可用?

该案件也涵盖在最大的答案,所以去与他的答案。如果广告未显示,则必须考虑广告不存在并非代码中的错误,我还建议使用此ID,同时测试它是否为测试广告并且其命中率将非常高

interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712");