实现激励视频广告时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
相关产品推荐
相关产品推荐

