Android AdMob报错:Cannot resolve symbol 'OnShowAdCompleteListener' 求解
解决「Cannot resolve symbol 'OnShowAdCompleteListener'」错误
问题描述
开发中遇到错误提示「Cannot resolve symbol 'OnShowAdCompleteListener'」,代码取自Google官方AdMob教程,已添加教程中相同的导入语句,其他代码均正常运行。相关代码如下:
/** * Show the ad if one isn't already showing. * * @param activity the activity that shows the app open ad * @param onShowAdCompleteListener the listener to be notified when an app open ad is complete */ private void showAdIfAvailable( @NonNull final Activity activity, @NonNull OnShowAdCompleteListener onShowAdCompleteListener) { // If the app open ad is already showing, do not show the ad again. if (isShowingAd) { //Log.d(LOG_TAG, "The app open ad is already showing."); return; } // If the app open ad is not available yet, invoke the callback then load the ad. if (!isAdAvailable()) { //Log.d(LOG_TAG, "The app open ad is not ready yet."); onShowAdCompleteListener.onShowAdComplete(); loadAd(activity); return; } //Log.d(LOG_TAG, "Will show ad."); appOpenAd.setFullScreenContentCallback( new FullScreenContentCallback() { /** Called when full screen content is dismissed. */ @Override public void onAdDismissedFullScreenContent() { // Set the reference to null so isAdAvailable() returns false. appOpenAd = null; isShowingAd = false; //Log.d(LOG_TAG, "onAdDismissedFullScreenContent."); //Toast.makeText(activity, "onAdDismissedFullScreenContent", Toast.LENGTH_SHORT).show(); onShowAdCompleteListener.onShowAdComplete(); loadAd(activity); } /** Called when fullscreen content failed to show. */ @Override public void onAdFailedToShowFullScreenContent(AdError adError) { appOpenAd = null; isShowingAd = false; //Log.d(LOG_TAG, "onAdFailedToShowFullScreenContent: " + adError.getMessage()); //Toast.makeText(activity, "onAdFailedToShowFullScreenContent", Toast.LENGTH_SHORT).show(); onShowAdCompleteListener.onShowAdComplete(); loadAd(activity); } /** Called when fullscreen content is shown. */ @Override public void onAdShowedFullScreenContent() { //Log.d(LOG_TAG, "onAdShowedFullScreenContent."); //Toast.makeText(activity, "onAdShowedFullScreenContent", Toast.LENGTH_SHORT).show(); } }); isShowingAd = true; appOpenAd.show(activity); }
修复方案
- 手动定义OnShowAdCompleteListener接口
这个接口并非AdMob SDK自带,是官方示例自定义的回调接口。你需要在包含showAdIfAvailable方法的类(比如MyApplication)中添加以下代码:
public interface OnShowAdCompleteListener { void onShowAdComplete(); }
清理重建项目
在Android Studio中依次点击Build -> Clean Project,完成后再点击Build -> Rebuild Project,清除缓存后重新编译,解决符号识别异常问题。核对依赖版本
确保项目中AdMob依赖版本与官方示例一致,在模块级build.gradle文件中检查依赖:
implementation 'com.google.android.gms:play-services-ads:22.6.0' // 版本号以示例为准
内容的提问来源于stack exchange,提问作者user19763422
相关产品推荐
相关产品推荐

