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.
- Envío de DateTimeOffset desde Android a .NET Web API
- Cómo reanudar una descarga interrumpida - parte 2
- ¿Qué framework de Java REST para usar con App Engine y Android para los estudiantes?
- RxJava y eventos esporádicos al azar en Android
- Causado por: android.database.sqlite.SQLiteException: near "": error de sintaxis (código 1):, al compilar:
<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);
- Subida de imagen amazon s3 android SDK 2.0
- El contexto de Android se convierte en nulo
- Cómo hacer que EditText no se enfoque al crear la actividad
- Android - Crash al generar un número aleatorio
- Sube fotos de la aplicación de Android a Google Cloud Storage / App Engine - carácter ilegal '_'
- Cómo obtener el valor de la columna Timestamp en android mediante cursor
- Configuración de RelativeLayout en código java
- Intente capturar un token inesperado
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