在 MainActivity 中加载激励广告仍然为空
Loading a Rewarded Ad in MainActivity remains null
我正在尝试在 MainActivity
中加载一个 RewardedAd
对象,然后在另一个 activity 中访问该对象。
主要活动:
var rewardedAd: RewardedAd? = null
private fun createAndLoadRewardedAd(adUnitId: String): RewardedAd {
val ad = RewardedAd(this, adUnitId)
val adLoadCallback = object : RewardedAdLoadCallback() {
override fun onRewardedAdLoaded() {
// Ad successfully loaded.
println("Ad successfully loaded.")
}
override fun onRewardedAdFailedToLoad(adError: LoadAdError?) {
// Ad failed to load.
println("Ad failed to load.")
}
}
ad.loadAd(AdRequest.Builder().build(), adLoadCallback)
return ad
}
并且在 onCreate(savedInstanceState: Bundle?)
中我设置了值:
rewardedAd = createAndLoadRewardedAd(StaticAppData.rewardedAdID)
println("MAINACTIVITY - $rewardedAd")
在 App Load 上,打印语句的值设置为 rewardedAd;它不为空。
现在,当我尝试在另一个 activity 中访问 rewardedAd(以实际显示激励广告)时,它为空。
addCoinsButtonPressed.setOnClickListener {
println(MainActivity().rewardedAd)
}
prints `null`.
在 MainActivity 中加载后,如何从另一个 activity 访问 rewardedAd?
MainActivity()
是构造函数,这意味着您正在尝试在新实例上访问此变量。
要在活动之间共享变量,您可以将其放在静态上下文中,例如
class MainActivity : Activity {
companion object {
var rewardedAd: RewardedAd? = null
}
...
}
然后用MainActivity.rewardedAd
访问它。
请注意,虽然这是一个简单的解决方案,但全局可变变量是不好的做法,应该避免。使用例如改为后台服务。
我正在尝试在 MainActivity
中加载一个 RewardedAd
对象,然后在另一个 activity 中访问该对象。
主要活动:
var rewardedAd: RewardedAd? = null
private fun createAndLoadRewardedAd(adUnitId: String): RewardedAd {
val ad = RewardedAd(this, adUnitId)
val adLoadCallback = object : RewardedAdLoadCallback() {
override fun onRewardedAdLoaded() {
// Ad successfully loaded.
println("Ad successfully loaded.")
}
override fun onRewardedAdFailedToLoad(adError: LoadAdError?) {
// Ad failed to load.
println("Ad failed to load.")
}
}
ad.loadAd(AdRequest.Builder().build(), adLoadCallback)
return ad
}
并且在 onCreate(savedInstanceState: Bundle?)
中我设置了值:
rewardedAd = createAndLoadRewardedAd(StaticAppData.rewardedAdID)
println("MAINACTIVITY - $rewardedAd")
在 App Load 上,打印语句的值设置为 rewardedAd;它不为空。
现在,当我尝试在另一个 activity 中访问 rewardedAd(以实际显示激励广告)时,它为空。
addCoinsButtonPressed.setOnClickListener {
println(MainActivity().rewardedAd)
}
prints `null`.
在 MainActivity 中加载后,如何从另一个 activity 访问 rewardedAd?
MainActivity()
是构造函数,这意味着您正在尝试在新实例上访问此变量。
要在活动之间共享变量,您可以将其放在静态上下文中,例如
class MainActivity : Activity {
companion object {
var rewardedAd: RewardedAd? = null
}
...
}
然后用MainActivity.rewardedAd
访问它。
请注意,虽然这是一个简单的解决方案,但全局可变变量是不好的做法,应该避免。使用例如改为后台服务。