从SliderLayout运行插页式广告

时间:2018-04-13 13:02:19

标签: android admob ads

我的应用中有一个插页式广告,当我在onCreate()中展示广告时,它有效。 现在我正在使用库来制作带有Glide库的图像滑块,我想在20卷图像后显示广告。

我使用了一个计数器来确定滚动的图像数量,然后显示广告。

这是插页式广告和AdRequest的初始化和创建

InterstitialAd interstitial;
AdRequest adRequest;
SliderLayout slider;

int count=0;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_slider);

    slider = findViewById(R.id.slider);
    interstitial = new InterstitialAd(SliderActivity.this);
    interstitial.setAdUnitId(getString(R.string.ad_interisial));
    adRequest = new AdRequest.Builder().addTestDevice("7B7D134FF9931565B8C442934E12A0C1").build();
    interstitial.loadAd(adRequest);
  }

并且滑块提供滚动页面的监听器这里是我写的代码

slider.addOnPageChangeListener(new ViewPagerEx.OnPageChangeListener()   {


        @Override
        public void onPageSelected(int i) {


            count++;
            System.out.println("count = " + count);
            if(count %20 == 0){

                        System.out.println("twenty times");
                        displayInterstitial();


            }


        }
    });

这里是displayInterstitial()方法

public void displayInterstitial() { 
    if (interstitial.isLoaded())
    {
        interstitial.show();
    } 
}

当我滚动20张图片时,代码会打印“二十次”,但广告未加载。

我错过了什么吗?  为什么会出现这个问题?

2 个答案:

答案 0 :(得分:1)

interstitial.setAdListener(new AdListener(){
                            public void onAdLoaded(){
                                System.out.println("adLoaded");

                                interstitial.show();
                            }
                        });

您需要在onCreate()方法中添加此侦听器。 并更改方法displayInterstitial()的内容,如下所示:

public void displayInterstitial() { 
    if (!interstitial.isLoaded())
    {
        interstitial.loadAd(adRequest);
    } 
}

答案 1 :(得分:0)

这是因为广告是在寻呼机达到20次之前加载的。

当您调用interstitial.loadAd(adRequest);时,经过一段时间后,您可以通过打印日志看到onLoaded调用此函数并且if(count %20 == 0)返回false。

<强>解决方案

您必须在调用loadAd之前设置广告加载侦听器。

interstitial.setAdListener(new AdListener()
{
    public void onAdLoaded()
    {
        System.out.println("adLoaded");
        isAdLoaded = true;
    }
}
interstitial.loadAd(adRequest);

并在onPageSelected

中展示广告
@Override
public void onPageSelected(int i) {

    count++;
    System.out.println("count = " + count);
    if(isAdLoaded && count%20 == 0){

            isAdLoaded = false;
            System.out.println("twenty times");
            displayInterstitial();
    }
}

我希望这对你有用。