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

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);
}

修复方案

  1. 手动定义OnShowAdCompleteListener接口
    这个接口并非AdMob SDK自带,是官方示例自定义的回调接口。你需要在包含showAdIfAvailable方法的类(比如MyApplication)中添加以下代码:
public interface OnShowAdCompleteListener {
    void onShowAdComplete();
}
  1. 清理重建项目
    在Android Studio中依次点击Build -> Clean Project,完成后再点击Build -> Rebuild Project,清除缓存后重新编译,解决符号识别异常问题。

  2. 核对依赖版本
    确保项目中AdMob依赖版本与官方示例一致,在模块级build.gradle文件中检查依赖:

implementation 'com.google.android.gms:play-services-ads:22.6.0' // 版本号以示例为准

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:12:39