通过程序设置时,必须在loadAd之前设置广告尺寸和广告单元ID
问题内容:
我不知道这是怎么回事,但是我试图通过下面的代码动态设置广告单元ID,并将其从XML中删除,但仍然出现错误:
必须在调用loadAd之前设置广告尺寸和广告单元ID。
<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>
和
AdView mAdView = (AdView) rootView.findViewById(R.id.adView);
mAdView.setAdUnitId(getEvent().getAdMobUnitId());
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
问题答案:
以编程方式创建
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);
并在您的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>
编辑
横幅广告的最佳做法是两次在每个视图中显示一个横幅广告(一个unitId
),如果要在同一屏幕中显示更多横幅广告(不推荐),则必须unitId
从控制台创建另一个横幅广告,并为每个视图创建一个adView
unitId
。
我的答案是:
不知道它是否是一个错误,或者unitId
每个adView只能有一个错误unitId
,并且更有意义,因为每个adView
只能有一个错误,并且从文档中读取
它们显示了两种方法来实现此目的,方法是实例化一个新的程序化AdView()
对象设置“ unitIds
和” sizes
或“仅”从XML执行。
我做了一些测试以得出这个结论。
通过使用您的中的findViewById com.google.android.gms.ads.AdView
1- setAdUnitId
如果adSize
先设置,则可以编程。
2- setAdUnitId
如果它已经存在于xml中,则无法以编程方式进行。
3 -如果你没有在你的XML使用“setAdUnitId”,它会提醒Required xml attribute adUnitId was missing
,与同为adSize
,即使你设定编程两个属性。
4 -如果不把setAdUnitId
和setSize
,并把它程式设计,AdView中会提醒你 Required xml attribute adUnitId was missing
,如果你不设置相同的adSize
XML格式。
5-以编程方式唯一可以做的就是调用mAdView.loadAd(adRequest)
加载广告
通过使用 new AdView()
1-如果您创建一个空的布局,然后将adView引用添加到此视图,则它将起作用。
2-您可以设置adSize
和以adUnitId
编程方式运行。
3-如果您尝试使用setAdUnitAd
两次The ad unit ID can only be set once on AdView.
,则使用findViewById
我的结论是:
您只能从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" />
并在onCreate上加载视图
AdView mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
或完全以编程方式
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);
我使用横幅很长时间了,这个答案对我很有帮助。