在调用loadAd之前,必须设置“广告尺寸”和“广告单元ID”

我有这个在我的主要XML文件中:

<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adUnitId="******************" ads:adSize="BANNER" android:id="@+id/adView"/> 

我已经设置了广告尺寸和单位ID,但是当它运行时(从MainActivity.java),

 AdView adView = (AdView)this.findViewById(com.example.lovetestactual.R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest); 

它抛出了标题中的例外。

Solutions Collecting From Web of "在调用loadAd之前,必须设置“广告尺寸”和“广告单元ID”"

我在github的例子中find解决scheme,那就是:

代替

 xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 

删除xmlns:ads ***标签并添加

 xmlns:ads="http://schemas.android.com/apk/res-auto" 

标记到您的LinearLayout标记如下所示:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/hello"/> <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="INSERT_YOUR_AD_UNIT_ID_HERE"/> </LinearLayout> 

而已 :)

github链接这个XML

确保以相同的方式设置广告尺寸和广告单元ID(即以XML或以编程方式同时设置)。

这将是模糊的,因为你没有说明你的XML文件是什么types的视图(相对,线性等)

在我的可滚动相对布局的应用程序中,我包括:

 <RelativeLayout android:id="@+id/test" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/TextView07" android:paddingTop="20dp" > </RelativeLayout> 

现在在我的实际课堂上,我不想包含我的广告:

 private AdView adView; /* Your ad unit id. Replace with your actual ad unit id. */ private static final String AD_UNIT_ID = "ca-app-pub-xxxxxx/yyyyyy"; /** * Simply loads the xml about page layout to display the text. */ public void onCreate(Bundle start) { super.onCreate(start); setContentView(R.layout.about); final TelephonyManager tm = (TelephonyManager) getBaseContext() .getSystemService(Context.TELEPHONY_SERVICE); //String deviceid = tm.getDeviceId(); adView = new AdView(this); adView.setAdSize(AdSize.SMART_BANNER); adView.setAdUnitId(AD_UNIT_ID); // Add the AdView to the view hierarchy. The view will have no size // until the ad is loaded. RelativeLayout layout = (RelativeLayout) findViewById(R.id.test); layout.addView(adView); // Create an ad request. Check logcat output for the hashed device ID to // get test ads on a physical device. AdRequest adRequest = new AdRequest.Builder() .build(); //.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) //.addTestDevice(deviceid).build(); // Start loading the ad in the background. adView.loadAd(adRequest); } 

现在,理想情况下,您希望使用智能横幅优化所有设备的布局,如上所述,现在这是标准。

如果这没有帮助到这里

很多人现有的应用程序迁移到谷歌播放服务方法不正确地添加错误的信息。

我想指出的是,许多具有相同问题的人一直以此为模板

 <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/lib-auto" android:id="@+id/adView" android:layout_width="match_parent" android:layout_height="50dp" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX" ads:loadAdOnCreate="true" > </com.google.android.gms.ads.AdView> 

这是不正确的,因为xmlns:广告应该更改为: – xmlns:ads="http://schemas.android.com/apk/res-auto"

像这样

 <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="match_parent" android:layout_height="50dp" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-XXXXXXXXXXXXXXXX/XXXXXXXXXX" ads:loadAdOnCreate="true" > </com.google.android.gms.ads.AdView> 

我尝试更改名称空间声明,但它不工作。 我通过指定adView的高度值而不是wrap_content来解决这个问题。 这个对我有用

 <com.google.android.gms.ads.AdView android:id="@+id/adView2" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_gravity="center|bottom" ads:adSize="BANNER" ads:adUnitId="@string/banner_ad_unit_id" />