El tamaño del anuncio y el ID de la unidad de anuncio deben configurarse antes de loadAd cuando se establezca mediante programación

No tengo idea de lo que está sucediendo aquí, pero estoy intentando establecer mi ID de bloque de anuncios dinámicamente a través de código como a continuación y eliminarlo del XML, pero aún así obtener el error:

El tamaño del anuncio y el ID de la unidad de anuncio deben configurarse antes de que se llame a loadAd.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="SMART_BANNER"> </com.google.android.gms.ads.AdView> 

y

  AdView mAdView = (AdView) rootView.findViewById(R.id.adView); mAdView.setAdUnitId(getEvent().getAdMobUnitId()); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); 

Cree programaticamente

 View adContainer = findViewById(R.id.adMobView); AdView mAdView = new AdView(context); mAdView.setAdSize(AdSize.BANNER); mAdView.setAdUnitId(YOUR_BANNER_ID); ((RelativeLayout)adContainer).addView(mAdView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); 

Y en tu archivo xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/adMobView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true"/> </RelativeLayout> 

EDITAR

La mejor práctica para los banners, es dos mostrar un banner por vista (un unitId ), si desea mostrar más banners en las mismas pantallas (NO RECOMENDADO), usted tiene que crear otro unitId de la consola y un adView para cada unitId .

Mi respuesta es:

No sé si es un error o si puede tener sólo un unitId por adView y tiene más sentido, ya que sólo puede tener un unitId por adView, y la lectura de documentos que muestran dos formas de hacerlo, por instantianting un nuevo AdView() y programar de forma programada los unitIds y sizes O hacerlo sólo desde XML.

Y hice algunas pruebas para llegar a esta conclusión.

Utilizando findViewById desde su com.google.android.gms.ads.AdView

1 – Puede setAdUnitId programática si establece primero adSize .

2 – No puede setAdUnitId programatically si ya está en su xml.

3 – Si no usa 'setAdUnitId' en su xml, se alertará El Required xml attribute adUnitId was missing , y lo mismo para adSize incluso si establece ambos atributos de forma programática.

4 – Si no se pone setAdUnitId y setSize y lo pone programáticamente, el adView le alertará El Required xml attribute adUnitId was missing , y lo mismo si no se establece adSize en xml.

5 – Lo único que puede hacer mediante programación es llamar a mAdView.loadAd(adRequest) para cargar el anuncio

Mediante el uso de new AdView()

1 – Funcionará si crea un diseño vacío y, a continuación, agregue la referencia adView a esta vista.

2 – Usted puede fijar adSize y adUnitId programatically él trabajará.

3- Si intenta utilizar setAdUnitAd dos veces, se setAdUnitAd esta excepción. The ad unit ID can only be set once on AdView. Lo mismo si usas por findViewById

Mis conclusiones son:

Sólo se puede utilizar desde XML "

 <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="match_parent" android:layout_height="wrap_content" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-my_id_number_was_ommited_by_security" /> 

Y vista de carga en onCreate

 AdView mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); 

O programaticamente completo

 View adContainer = findViewById(R.id.adMobView); AdView mAdView = new AdView(context); mAdView.setAdSize(AdSize.BANNER); mAdView.setAdUnitId(YOUR_BANNER_ID); adContainer.addView(mAdView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); 

Utilizo pancartas durante mucho tiempo y esa respuesta es buena para mí.

Tienes

 android:layout_width="wrap_content" android:layout_height="wrap_content" 

De: https://developers.google.com/admob/android/banner#smart_banners

Nota: la vista de banner inteligente en su diseño debe consumir todo el ancho del dispositivo. Si no lo hace, obtendrá una advertencia con el mensaje "No hay espacio suficiente para mostrar el anuncio" y el banner no se mostrará.

Cambia a

 android:layout_width="match_parent" 

Y defina su adUnitID en el archivo xml.

 ads:adUnitId="AD_UNIT_ID" 

Intente establecer el ID de su unidad de anuncio en XML

 ads:adUnitId="INSERT_YOUR_AD_UNIT_ID_HERE" 

Me gusta

 ads:adUnitId="ca-app-pub-3940256099942544/6300978" 

O encuentra el enlace para obtener más información https://developers.google.com/admob/android/quick-start

Para mí, estaba estableciendo el tipo de anuncio como este:

 ads:adSize="Banner" 

Mientras que debe ser todos los casquillos:

 ads:adSize="BANNER" 
  • Android EditText rezagado al escribir texto
  • Room: el directorio de exportación de esquemas no se proporciona al procesador de anotaciones, por lo que no podemos exportar el esquema
  • Esperaba un mapa mientras se deserializaba, pero obtuvo una clase java.lang.Long
  • Varias llamadas a CountDownLatch.await (int) con tiempo de espera
  • ¿Cómo comprobar el título de la barra de herramientas en la prueba instrumental android?
  • Android KeyStore System - Guardar un KeyPair?
  • Vista Listview de Android elimina cualquier espacio entre los elementos
  • Crear carpeta en Android
  • ¿Los comentarios afectan el tiempo de compilación?
  • ¿Existe un Java / Android equivalente a la función iOS "componentsJoinedByString" para un NSArray?
  • Cómo actualizar el PNR Capcha añadido en el Indian Railways Site
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.