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

.NET MAUI中无法展示InterstitialAd,重写OnAdLoaded遇编译错误

解决重写OnAdLoaded()时的编译错误问题

针对你遇到的“找不到合适的重写方法”错误,以下是几种排查和解决思路:

1. 显式指定类型的命名空间

最常见的原因是类型混淆——项目中可能存在同名的InterstitialAd或InterstitialAdLoadCallback类型(比如来自其他库或自定义类)。请在相关代码中显式指定AdMob官方类型的命名空间Android.Gms.Ads:

修改后的回调类代码:

private class MyInterstitialAdLoadCallback : Android.Gms.Ads.InterstitialAdLoadCallback
{
    private readonly AdMobInterstitialAd _adMobInterstitialAd;

    public MyInterstitialAdLoadCallback(AdMobInterstitialAd adMobInterstitialAd)
    {
        _adMobInterstitialAd = adMobInterstitialAd;
    }
         
    public override void OnAdLoaded(Android.Gms.Ads.InterstitialAd ad)
    {
        _adMobInterstitialAd.interstitialAd = ad;
        Console.WriteLine("Ad loaded.");
    }

    public override void OnAdFailedToLoad(Android.Gms.Ads.LoadAdError error)
    {
        Console.WriteLine("Failed to load ad: " + error.Message);
    }
}

同时确保外层类中的字段类型一致:

private Android.Gms.Ads.InterstitialAd interstitialAd;

2. 清理项目缓存并重新生成

.NET 9的绑定库偶尔会出现缓存导致的类型不匹配问题:

  • 删除项目目录下的bin和obj文件夹
  • 关闭并重新打开IDE
  • 重新生成整个解决方案

3. 验证NuGet包的正确性

  • 确认安装的是**Xamarin.GooglePlayServices.Ads** NuGet包,而非其他第三方AdMob相关包
  • 检查包版本与.NET 9的兼容性,尝试安装最新稳定兼容版本
  • 移除重复或冲突的AdMob相关NuGet包,避免版本冲突

4. 检查方法签名的完全匹配

确认重写的方法签名与基类完全一致:

  • OnAdLoaded的参数必须是Android.Gms.Ads.InterstitialAd,不能是接口或其他派生类型
  • 方法访问修饰符必须为public override,与基类的virtual方法匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:23:16