繁体   English   中英

充气错误 class com.inmobi.ads.InMobiBanner

[英]Error inflating class com.inmobi.ads.InMobiBanner

我一步一步地遵循了 Android 应用程序的 InMobi 指南,但得到了以下异常
DataBindingUtil.setContentView(这个,R.layout.mainActivity):

Binary XML file line #670: Binary XML file line #670: Error inflating class com.inmobi.ads.InMobiBanner

<LinearLayout
    xmlns:inmobi="http://schemas.android.com/apk/lib/com.inmobi.ads"
    android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical">
    <TextView android:text="Ad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <com.inmobi.ads.InMobiBanner
        android:id="@+id/bannerAdInMobi"
        android:layout_width="320dp"
        android:layout_height="50dp"
        inmobi:placementId="plid-1526902340491"
        inmobi:refreshInterval="60" />
</LinearLayout>

任何人都可以提供有关如何诊断它的提示吗?

由于一个月后没有人回答,让我发布我的。 InMobil 的支持帮助我在InMobiSdk.init()之前找到了罪魁祸首——布局膨胀。 应用程序需要在膨胀布局之前运行InMobiSdk.init()

我的应用程序不能这样做,因为它只在某些条件下使用 InMobil 广告(例如,只有免费版本有广告),所以我从布局中删除了com.inmobi.ads.InMobiBanner ,并在需要时将其添加到 Java 代码中。

好的,我解决了这个问题。 只需按照以下步骤->

第 1 步:在 Activity/fragment 中声明变量

private lateinit var bannerAd: InMobiBanner

第 2 步:在 onCreate() 中初始化 InMobiSDK

override fun onCreate(savedInstanceState: Bundle?) {
    bannerAd= Helper.InitializInMobiAds(requireContext())
    super.onCreate(savedInstanceState)
}

第 3 步:这里是 Helper Class 中的 InitializInMobiAds() 方法

 fun InitializInMobiAds(context: Context): InMobiBanner{
        val consentObject = JSONObject()
        try {
            // Provide correct consent value to sdk which is obtained by User
            consentObject.put(InMobiSdk.IM_GDPR_CONSENT_AVAILABLE, false)
            // Provide 0 if GDPR is not applicable and 1 if applicable
            consentObject.put("gdpr", "0")
            // Provide user consent in IAB format
            //  consentObject.put(InMobiSdk.IM_GDPR_CONSENT_IAB, “ << consent in IAB format >> ”)
        } catch (e: JSONException) {
            e.printStackTrace()
        }
        InMobiSdk.init(context, "AcountIdHere" , consentObject,  SdkInitializationListener() {
            @Override
            fun onInitializationComplete(error : Error?) {
                if (null != error) {
                    Log.e("", "InMobi Init failed -" + error.message.toString())
                } else {
                    Log.d("", "InMobi Init Successful")
                }
            }
        })

       return  InMobiBanner(context, PLID_here)
    }

第 4 步:现在在 onCreateView() 或在 onCreate() 之后运行的任何块中使用.load() 方法

 binding.adView.load()
 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM