You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级AdMob库后setAdListener未定义,无法使用onAdClosed回调如何解决?

问题原因

AdMob从20.0.0及以上版本开始,移除了InterstitialAd类原有的setAdListener()方法,广告事件回调改用全新的FullScreenContentCallback替代。

适配解决方案

直接替换原有setAdListener代码为以下实现即可,你需要的onAdClosed对应新回调里的onAdDismissedFullScreenContent方法,触发时机完全一致:

mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
    @Override
    public void onAdLoaded() {
        // 对应原AdListener的onAdLoaded
        Toast.makeText(MyActivity.this,
                "The interstitial is loaded", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onAdDismissedFullScreenContent() {
        // 对应原AdListener的onAdClosed,在此处添加打开新Intent的逻辑即可
        mInterstitialAd = null;
        goToNextLevel();
    }

    // 可按需添加其他回调
    @Override
    public void onAdFailedToShowFullScreenContent(AdError adError) {
        mInterstitialAd = null;
    }

    @Override
    public void onAdShowedFullScreenContent() {
        // 广告成功展示时触发
    }
});

如果升级后广告加载逻辑也出现报错,同步将原有加载逻辑替换为新版本的静态加载方案即可:

AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(MyActivity.this, "你的插屏广告单元ID", adRequest,
    new InterstitialAdLoadCallback() {
        @Override
        public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
            mInterstitialAd = interstitialAd;
            // 此处可以绑定上面的FullScreenContentCallback
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
            mInterstitialAd = null;
        }
    });

内容的提问来源于stack exchange,提问作者Bilal Rammal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:45:05