在我的应用中,用户从 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)
}
}
}
}
有什么办法可以解决这个问题。谢谢
答案 0 :(得分:1)
由于您的 mInterstitialAd
可为空,因此您的 FullScreenContentCallback
永远不会被初始化,因为当您尝试调用它时 mInterstitialAd
为空。它将在调用 onAdLoaded
之前执行。
像这样将全屏内容回调放在 onAdLoaded 回调中
override fun onAdLoaded(interstitialAd: InterstitialAd) {
interstitialAd.fullScreenContentCallback = object:FullScreenContentCallback() {
override fun onAdDismissedFullScreenContent() {
startActivity(i)
}
}
mInterstitialAd = interstitialAd
}
最好的做法是将变量初始化放在类的顶部而不是底部
private var mInterstitialAd: InterstitialAd? = null
private val i = Intent(this, SecondActivity::class.java)