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);
- IabHelper.startSetup () hace que NullPointerException
- Marco basado en JSF para sitios web táctiles
- No se pueden obtener widgets de main.xml referenciados en el programa Java
- La respuesta HTTPUrlConnection de Android devuelve la basura
- Excepción extraña: no se puede emitir cadena a booleano cuando se utiliza getBoolean
- SSL Broken Pipe
- Cambio de color del texto del botón mediante programación
- ¿Cómo rebatir una solicitud reactiva retrofit en java?
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"
- TextToSpeech.OnInitListener.onInit (int) que se llama continuamente
- Cómo obtener el usuario Inicio / Lugar de trabajo de un usuario en Android