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

实现激励视频广告时onRewarded方法提示未重写父类方法求助

解决激励视频广告onRewarded方法的“method does not override method from its superclass”报错

这个报错本质是说你写的onRewarded方法并没有正确重写父类或接口里的对应方法,大概率是方法签名不匹配或者SDK版本更新导致方法名变更了,我给你梳理几个常见的解决方向:

1. 检查你使用的广告SDK版本及对应监听器方法

如果你用的是Google AdMob的激励广告,这里有个关键版本变化:

  • 旧版的RewardedVideoAd对应的监听器RewardedVideoAdListener里确实有onRewarded(RewardItem)方法
  • 但新版的RewardedAd对应的RewardedAdListener已经把这个方法改名为onUserEarnedReward(RewardItem)了

如果是后者,你需要直接修改方法名,代码改成这样:

@Override
public void onUserEarnedReward(RewardItem rewardItem) {
    Toast.makeText(this, "onRewarded! currency: " + rewardItem.getType() + " amount: " + rewardItem.getAmount(), Toast.LENGTH_SHORT).show();
}

2. 确认方法签名完全一致

如果你确实在用旧版SDK,那要确保你的方法和父类/接口的签名丝毫不差:

  • 方法名必须是onRewarded,拼写不能错
  • 返回值必须是void
  • 参数类型必须是SDK提供的RewardItem(注意导入正确的包:旧版是com.google.android.gms.ads.reward.RewardItem,新版是com.google.android.gms.ads.rewarded.RewardItem)
  • 访问修饰符必须是public

3. 检查依赖的SDK版本

打开你的Module级别build.gradle文件,确认ads依赖的版本:

// 新版依赖示例,建议使用最新稳定版
implementation 'com.google.android.gms:play-services-ads:22.6.0'

如果版本过旧,建议升级到最新版,同时同步更新对应的监听器方法和导入类。

4. 确认正确实现了对应接口

比如旧版需要实现RewardedVideoAdListener,新版需要实现RewardedAdListener,如果没实现对应的接口,IDE也会认为你没有重写任何方法,从而抛出这个错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:44:53