我在我的应用程序中有一个Interstitial广告,当我在onCreate()中显示广告时,它是有效的。现在我用一个库用幻灯片库制作图像滑块,我想在20张图片卷轴后显示广告。
我用一个计数器来确定滚动图像的数量,然后显示广告。
这是Interstitial和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张图片时,代码会打印“20次”,但广告没有加载。
我错过什么了吗?为何会出现这个问题呢?
发布于 2018-04-13 13:10:54
interstitial.setAdListener(new AdListener(){
public void onAdLoaded(){
System.out.println("adLoaded");
interstitial.show();
}
});您需要在onCreate()方法中添加此侦听器。并更改方法displayInterstitial()的内容,如下所示:
public void displayInterstitial() {
if (!interstitial.isLoaded())
{
interstitial.loadAd(adRequest);
}
}发布于 2018-04-13 13:13:26
这是因为广告是在寻呼机到达20计数之前加载的。
当您调用interstitial.loadAd(adRequest);时,过了一段时间,您可以看到onLoaded调用它的打印日志,if(count %20 == 0)返回false。
溶液
在调用loadAd之前,必须设置ad加载侦听器。
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();
}
}我希望这对你有用。
https://stackoverflow.com/questions/49817704
复制相似问题