首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SliderLayout上运行Interstitial广告

从SliderLayout上运行Interstitial广告
EN

Stack Overflow用户
提问于 2018-04-13 13:02:18
回答 2查看 223关注 0票数 0

我在我的应用程序中有一个Interstitial广告,当我在onCreate()中显示广告时,它是有效的。现在我用一个库用幻灯片库制作图像滑块,我想在20张图片卷轴后显示广告。

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

这是Interstitial和AdRequest的初始化和创建。

代码语言:javascript
复制
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);
  }

滑块为滚动页面提供监听器,这是我编写的代码

代码语言:javascript
复制
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()方法

代码语言:javascript
复制
public void displayInterstitial() { 
    if (interstitial.isLoaded())
    {
        interstitial.show();
    } 
}

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-13 13:10:54

代码语言:javascript
复制
interstitial.setAdListener(new AdListener(){
                            public void onAdLoaded(){
                                System.out.println("adLoaded");

                                interstitial.show();
                            }
                        });

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

代码语言:javascript
复制
public void displayInterstitial() { 
    if (!interstitial.isLoaded())
    {
        interstitial.loadAd(adRequest);
    } 
}
票数 1
EN

Stack Overflow用户

发布于 2018-04-13 13:13:26

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

当您调用interstitial.loadAd(adRequest);时,过了一段时间,您可以看到onLoaded调用它的打印日志,if(count %20 == 0)返回false。

溶液

在调用loadAd之前,必须设置ad加载侦听器。

代码语言:javascript
复制
interstitial.setAdListener(new AdListener()
{
    public void onAdLoaded()
    {
        System.out.println("adLoaded");
        isAdLoaded = true;
    }
}
interstitial.loadAd(adRequest);

并在onPageSelected中显示广告

代码语言:javascript
复制
@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();
    }
}

我希望这对你有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49817704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档