当前位置:  开发笔记 > 编程语言 > 正文

以编程方式设置时,必须在loadAd之前设置广告尺寸和广告单元ID

如何解决《以编程方式设置时,必须在loadAd之前设置广告尺寸和广告单元ID》经验,为你挑选了2个好方法。

我不知道这里发生了什么,但我试图通过下面的代码动态设置我的广告单元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()和程序化的设置unitIdssizesOR仅从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 - 您可以设置adSizeadUnitId编程它将工作.

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);

我使用横幅很长一段时间,这个答案对我有好处.



1> diogojme..:

以编程方式创建它

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()和程序化的设置unitIdssizesOR仅从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 - 您可以设置adSizeadUnitId编程它将工作.

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);

我使用横幅很长一段时间,这个答案对我有好处.



2> 小智..:
xmlns:ads="http://schemas.android.com/apk/res-auto" 

这解决了我的问题。

不要使用这个

xmlns:ads="http://schemas.android.com/tools" 

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有