包含带数据绑定的AdView

时间:2016-11-02 06:53:20

标签: android data-binding admob android-databinding

我正在尝试使用带有数据绑定的adView的include布局。但是,它给我一个错误:

  

java.lang.IllegalStateException:必须在调用loadAd之前设置广告尺寸和广告单元ID。

现在我正在做的是,在我的主要活动布局中,我已经为adUnitId添加了带有变量adId的布局,如下所示:

       <include
            android:id="@+id/adViewInclude"
            layout="@layout/include_ads"
            app:adId="@{@string/main_activity_banner_ad_unit_id}" />

我的include_ads.xml是这样的:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

        <variable
            name="adId"
            type="String" />

    </data>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="vertical">

        <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:adSize="SMART_BANNER"
            app:adUnitId="@{adId}" />

    </FrameLayout>
</layout>

现在,在我的Activity onCreate方法中,我最后调用了这个方法:

private void loadAds() {
    mBinding.executePendingBindings();
    AdRequest adRequest = new AdRequest.Builder().build();
    mBinding.mainContent.adViewInclude.adView.loadAd(adRequest);
}

但是,这是一个错误。这里出了什么问题?

1 个答案:

答案 0 :(得分:0)

您应该使用app:adSize="BANNER"代替SMART_BANNER