如何在广告关闭时启动 Second Activity? (科特林)

How to start Second Activity when ad is closed? (Kotlin)

在我的应用中,用户在 MainActivity 中启动。单击按钮 (btn) 时,会弹出插页式广告。我希望它在广告关闭时转到 SecondActivity,但它只是返回到 MainActivity。我在下面粘贴了我的代码

class MainActivity : AppCompatActivity() {
private var mInterstitialAd: InterstitialAd? = null
val i:Intent = Intent(this, SecoundActivity::class.java)


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    MobileAds.initialize(this) {}
    var adRequest = AdRequest.Builder().build()

    InterstitialAd.load(this, "ca-app-pub-3940256099942544/1033173712", adRequest, object : InterstitialAdLoadCallback() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            mInterstitialAd = null
        }

        override fun onAdLoaded(interstitialAd: InterstitialAd) {

            mInterstitialAd?.fullScreenContentCallback = object:FullScreenContentCallback() {
                override fun onAdDismissedFullScreenContent() {
                    startActivity(i)
                }
            }
            mInterstitialAd = interstitialAd
        }
    })

    btn.setOnClickListener {
        if (mInterstitialAd != null) {
            mInterstitialAd?.show(this)

        }
    }
}

}

任何解决这个问题的方法。谢谢

由于您的 mInterstitialAd 可以为空,因此您的 FullScreenContentCallback 永远不会被初始化,因为当您尝试调用它时 mInterstitialAd 为空。它将在调用 onAdLoaded 之前执行。

像这样把全屏内容回调放到onAdLoaded回调中

    override fun onAdLoaded(interstitialAd: InterstitialAd) {
        interstitialAd.fullScreenContentCallback = object:FullScreenContentCallback() {
            override fun onAdDismissedFullScreenContent() {
                startActivity(i)
            }
        }
        mInterstitialAd = interstitialAd  
    }
 

此外,最好将变量初始化放在 class 的顶部而不是底部

private var mInterstitialAd: InterstitialAd? = null
private val i = Intent(this, SecondActivity::class.java)