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

Kotlin中onAdDismissedFullScreenContent内创建Intent跳转报错如何解决?

错误原因

编译报错的核心是Intent构造参数类型不匹配:

  • 实例化Intent的第一个参数需要传入Context类型的上下文对象
  • 你在匿名内部类FullScreenContentCallback中直接使用this,此时this指向的是当前FullScreenContentCallback实例,并非Activity/Fragment的上下文,因此触发类型错误。

除此之外你的代码还存在两个逻辑隐患:

  • 先调用show()展示广告再设置回调,可能出现广告展示完成时回调还未注册,导致无法触发跳转
  • 没有处理mInterstitialAd为空(广告未加载完成)的场景,此时点击控件不会触发任何跳转

修复方案

如果你在Activity中写这段代码

把代码中的this替换为this@你的Activity类名即可,比如你的Activity类名为HomeActivity,就写this@HomeActivity,完整代码如下:

FalgQuizImageView.setOnClickListener {
    mInterstitialAd?.let { ad ->
        // 先注册回调再展示广告,避免回调漏触发
        ad.fullScreenContentCallback = object: FullScreenContentCallback() {
            override fun onAdDismissedFullScreenContent() {
                // 广告用完后置空,避免重复使用旧广告实例
                mInterstitialAd = null
                val intent = Intent(this@HomeActivity, QuizQuestionsCar::class.java)
                startActivity(intent)
            }

            override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
                mInterstitialAd = null
                val intent = Intent(this@HomeActivity, QuizQuestionsCar::class.java)
                startActivity(intent)
            }
        }
        ad.show(this@HomeActivity)
    } ?: run {
        // 广告未准备好时直接跳转
        val intent = Intent(this@HomeActivity, QuizQuestionsCar::class.java)
        startActivity(intent)
    }
}

如果你在Fragment中写这段代码

把上下文替换为requireContext()即可:

FalgQuizImageView.setOnClickListener {
    mInterstitialAd?.let { ad ->
        ad.fullScreenContentCallback = object: FullScreenContentCallback() {
            override fun onAdDismissedFullScreenContent() {
                mInterstitialAd = null
                val intent = Intent(requireContext(), QuizQuestionsCar::class.java)
                startActivity(intent)
            }

            override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
                mInterstitialAd = null
                val intent = Intent(requireContext(), QuizQuestionsCar::class.java)
                startActivity(intent)
            }
        }
        ad.show(requireActivity())
    } ?: run {
        val intent = Intent(requireContext(), QuizQuestionsCar::class.java)
        startActivity(intent)
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 13:33:03