2016-11-02 7 views
0

Ich versuche, Include-Layout für die AdView mit Datenbindung zu verwenden. Aber es wirft mir einen Fehler:Include AdView mit Datenbindung

java.lang.IllegalStateException: The ad size and ad unit ID must be set before loadAd is called.

Nun, was ich tue, ist, meiner Haupttätigkeit Layout, ich eingeschlossen haben das Layout mit variabler AdID für die adUnitId wie folgt aus:

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

Meine include_ads.xml ist wie folgt:

<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> 

Jetzt in meiner Aktivitäten onCreate Methode, die ich diese Methode schließlich nenne:

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

Aber es wirft einen Fehler auf. Was läuft hier falsch?

+0

(Soweit ich weiß) statt verwenden sollten Leider ist es nicht möglich ist, die 'ad ID' zu binden, wird die Ursache in Ihrem Fehler beschrieben. (Die Anzeigenblock-ID muss festgelegt werden, bevor loadAd aufgerufen wird.) Ich habe den gleichen Fehler vor einiger Zeit, aber vielleicht werde ich versuchen, eine Arbeit zu finden :) – yennsarah

+1

@Amylinn Ja, es funktioniert einfach nicht. Ich habe eine Arbeit gefunden. Wird den Code bald posten. – kirtan403

Antwort

0

Sie app:adSize="BANNER"SMART_BANNER

+0

SMART_BANNER ist auch Teil der Anzeigengrößen – kirtan403

+0

Also, was ist mit mBinding Objekt? Ich habe versucht, adView von findViewById() hinzufügen und es funktionierte für mich (mit SMART_BANNER-Parameter) –

+0

Ja .. findViewById funktioniert auch für mich. Ich denke, es gibt einen Namensraumkonflikt für die Datenbindung. – kirtan403