android - 如何从另一个活动中调用 showAd()
问题描述
我正在尝试从另一个 Activity 类 RewardedAd.kt 调用在 MainActivity.kt 中定义的 runTheAd() 方法
我只是按照本指南 Google Admob Doc
MainActivity.kt中的函数
fun runTheAd(){
if (mRewardedVideoAd.isLoaded) {
mRewardedVideoAd.show()
}else{
loadRewardedVideoAd()
}
}
调用RewardAd.kt
getPoints.setOnClickListener{
MainActivity().runTheAd()
}
错误获取
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.takshaksh.layoutout, PID: 28485
kotlin.UninitializedPropertyAccessException: lateinit property mRewardedVideoAd has not been initialized
at com.takshaksh.layoutout.MainActivity.runTheAd(MainActivity.kt:56)
at com.takshaksh.layoutout.RewardedAd$onCreate$1.onClick(RewardedAd.kt:20)
解决方案
您需要先创建一个实例。之后调用 show 方法。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713")
// Use an activity context to get the rewarded video instance.
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this)
mRewardedVideoAd.rewardedVideoAdListener = this
}
另外,我记得您需要设置 adMob 端以激活您的广告 ID 并使用清单进行一些操作。因此,在此步骤的某处,连接无法正常工作,这就是未创建实例的原因,结果是错误。
推荐阅读
- asp.net - 使用 Azure 上的现有数据库部署 ASP MVC 应用程序
- angularjs - 无法在数字“1”上创建属性“路线”
- python - 如何使用模糊逻辑从熊猫数据框中匹配和提取文本?
- java - 有什么方法可以在使用 selenium 的 Web 自动化测试中获取请求正文?
- c++ - 对于正在运行的进程,VmRSS 显示为 0KB
- python - 如何在 Python 3 的空白字典中插入新项目?
- sql - 如何编写具有多种获取数据所需的方式的rest api
- arrays - 如何从 golang 中的数组 unsafe.Pointer 创建数组或切片?
- c++ - 可以在 C++11 中模拟 std::is_invocable 吗?
- python - 字符串匹配的向量化