首页 > 解决方案 > 如何从另一个活动中调用 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)

标签: androidkotlinadmob

解决方案


您需要先创建一个实例。之后调用 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 并使用清单进行一些操作。因此,在此步骤的某处,连接无法正常工作,这就是未创建实例的原因,结果是错误。


推荐阅读