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

如何解决Admob InterstitialAd实参形参长度不一致报错

报错原因

编译报错核心提示:InterstitialAd类的show方法无法适配传入参数,方法要求传入Activity类型参数,实际调用未传入任何参数,实参与形参列表长度不匹配。

这个问题是AdMob(Google Mobile Ads)SDK版本升级带来的API变更导致的:

  • 20.0.0版本之前的SDK中,InterstitialAd的show方法是无参方法,广告展示依赖加载广告时绑定的上下文
  • 20.0.0及之后的新版SDK调整了show方法签名,强制要求调用时显式传入Activity类型的参数作为广告展示宿主,用来校验上下文有效性,避免广告挂载到无效上下文引发内存泄漏、崩溃等问题
  • 当前项目依赖的是新版AdMob SDK,但代码还在沿用旧版无参调用的写法,方法签名不匹配,所以直接触发编译错误。
修复方案

核心修改逻辑:调用show方法时,传入当前处于前台活跃状态的Activity实例即可,注意不能传入Application类型上下文、已经销毁的Activity实例。
修正后的可运行代码如下:

public void interstitialAdMobAd() {
    if (ActivityHome.getInstance().mInterstitialAd != null) {
        if (ActivityHome.getInstance().mInterstitialAd.isLoaded()) {
            Log.d("shsjks", "sdhsjkhd");
            // 传入当前可见的宿主Activity,此处以ActivityHome单例实例为例
            ActivityHome.getInstance().mInterstitialAd.show(ActivityHome.getInstance());
        } else {
            // 广告未加载完成时,可在此补充重新触发广告预加载的逻辑
        }
    } else {
        // 广告实例未初始化时,可在此补充广告初始化、预加载逻辑
    }
}

开发时需要注意几个细节:

  • 如果是在Fragment中触发广告展示,可通过requireActivity()获取当前宿主Activity传入show方法
  • 传入的Activity必须处于前台可见状态,否则会出现广告展示失败、甚至应用崩溃的问题
  • 不要传入非Activity类型的Context(比如Application、Service上下文),会触发类型校验异常

内容的提问来源于stack exchange,提问作者SUNIL Sangwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:45:44