我不知道这里发生了什么,但我试图通过下面的代码动态设置我的广告单元ID,并将其从XML中删除但仍然得到错误:
必须在调用loadAd之前设置广告尺寸和广告单元ID.
和
AdView mAdView = (AdView) rootView.findViewById(R.id.adView); mAdView.setAdUnitId(getEvent().getAdMobUnitId()); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);
diogojme.. 54
以编程方式创建它
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文件中
编辑
横幅的最佳做法是每个视图两个显示一个横幅(一个unitId
),如果要在同一屏幕中显示更多横幅(不推荐),则必须unitId
从控制台创建另一个横幅,并为每个横幅创建一个adView unitId
.
我的回答是:
不知道它是否是一个错误,或者你是否unitId
每个adView只能有一个它更有意义,因为unitId
每个adView 只能有一个,并且从文档中读取 它们有两种方法可以实现,通过实例化一个新的AdView()
和程序化的设置unitIds
和sizes
OR仅从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"
并在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);
我使用横幅很长一段时间,这个答案对我有好处.
以编程方式创建它
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文件中
编辑
横幅的最佳做法是每个视图两个显示一个横幅(一个unitId
),如果要在同一屏幕中显示更多横幅(不推荐),则必须unitId
从控制台创建另一个横幅,并为每个横幅创建一个adView unitId
.
我的回答是:
不知道它是否是一个错误,或者你是否unitId
每个adView只能有一个它更有意义,因为unitId
每个adView 只能有一个,并且从文档中读取 它们有两种方法可以实现,通过实例化一个新的AdView()
和程序化的设置unitIds
和sizes
OR仅从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"
并在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);
我使用横幅很长一段时间,这个答案对我有好处.
xmlns:ads="http://schemas.android.com/apk/res-auto"
这解决了我的问题。
不要使用这个
xmlns:ads="http://schemas.android.com/tools"