Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onAdLoaded&;后PublisherdView变为空;onAdFailed_Android_Kotlin_Google Play Services_Synthetic - Fatal编程技术网

Android onAdLoaded&;后PublisherdView变为空;onAdFailed

Android onAdLoaded&;后PublisherdView变为空;onAdFailed,android,kotlin,google-play-services,synthetic,Android,Kotlin,Google Play Services,Synthetic,守则: private fun initAds() { val adRequest = PublisherAdRequest.Builder().build() pavDetail.loadAd(adRequest) pavDetail.adListener = object : AdListener() { override fun onAdLoaded() { super.onAdLoaded() pav

守则:

private fun initAds() {
    val adRequest = PublisherAdRequest.Builder().build()
    pavDetail.loadAd(adRequest)
    pavDetail.adListener = object : AdListener() {
        override fun onAdLoaded() {
            super.onAdLoaded()
            pavDetail.visibility = View.VISIBLE
        }

        override fun onAdFailedToLoad(i: Int) {
            pavDetail.visibility = View.GONE
            super.onAdFailedToLoad(i)
        }
    }
}
pavdail
com.google.android.gms.ads.doubleclick.PublisherAdView
,我是通过kotlinx从XML版面合成得到的

此代码有时会抛出
IllegalStateException
,因为
pavDetail
OnadaLoaded
OnadaFailedToLoad
中神秘地变为null

我设置了
pavdail?.visibility
以防止崩溃,但我不确定这是否有效,因为我怀疑调用
pavdail
本身可能引发该异常。请记住,这不是
NullPointerException
这是一个
IllegalStateException
发出消息
pavDetail不能为null


因此,我问为什么
pavdail
变为空,以及如何防止崩溃。

是否在
ViewHolder
onChanged
方法调用的
initAds
方法中使用它,如果没有数据。如果有数据,它将被
片段中创建的
活动调用
您的
ViewHolder
是否实现
layoutcainer
?很抱歉,我将
ViewHolder
视为
ViewModel
,混淆了您的问题。此代码位于
片段
中,该片段是
ViewPager
项,因此它不使用
ViewHolder
。因此,如果
LiveData
中没有数据,
onChanged
方法调用
initAds
方法。如果有数据,则直接由ActivityCreated上的
调用。