我的应用中有一个插页式广告,当我在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张图片时,代码会打印“二十次”,但广告未加载。
我错过了什么吗? 为什么会出现这个问题?
答案 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();
}
}
我希望这对你有用。