当前位置: 首页 > 面试题库 >

通过程序设置时,必须在loadAd之前设置广告尺寸和广告单元ID

公孙霖
2023-03-14
问题内容

我不知道这是怎么回事,但是我试图通过下面的代码动态设置广告单元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 -如果不把setAdUnitIdsetSize,并把它程式设计,AdView中会提醒你 Required xml attribute adUnitId was missing,如果你不设置相同的adSizeXML格式。

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

我使用横幅很长时间了,这个答案对我很有帮助。



 类似资料:
  • 问题内容: 我的主要xml文件中有这个: 我已经设置了广告尺寸和单位ID,但是在运行时(来自MainActivity.java), 标题中有一个例外。 问题答案: 我在github示例中找到了解决方案,即: 代替 删除xmlns:ads ***标记并添加 标记为LinearLayout标记,如下所示: 而已 :) 这个xml的github链接

  • 我想在Google Play的“专为家庭设计”类别中为儿童制作应用程序。据此:https://support.google.com/googleplay/android-developer/answer/6184502有两条规则: 不得使用广告墙 插播广告不得在应用程序启动后立即显示 请您解释一下如何使间质广告不全屏(不是广告墙)? 广告墙和插页广告有什么区别? 我曾经用过这个填隙词:https:

  • 在我的android项目中实现谷歌广告后,我面临着应用程序大小的大幅增加,对我来说,这是由com.google.android.gms.internal.ads.中的许多类引起的。有什么方法可以用更低的内存来实现广告吗?

  • 广告管理 (广告管理用于设置前台广告页面,同电脑端的设置。) 其中包括:名称、关键词、类别、宽度/字数、高度、是否启用和对某一广告的编辑。添加广告位还是分为平铺跟轮播两种。

  • 广告管理 (进入商城首先映入眼帘的便是精美的广告,可见广告图的设计是店铺留给顾客的第一印象,尤为重要。) 1.广告管理列表包括广告名称、关键词、类别、宽度/字数、高度、是否启用和对已添加的广告位修改操作。 2.添加广告。在添加时,广告位类别分为平铺和轮播,可根据自己的需求来选择。

  • 在我正在Unity中开发的android应用程序中,我使用admob做广告。横幅效果很好,但我想在玩家观看广告时奖励他们。我找不到关于如何在网络上为Unity设置奖励广告的可靠解释或教程。我在admob中为我的中介设置了Unity广告,几乎不知道ZoneId是什么意思。我刚刚在Unity广告上输入了“奖励视频”的集成ID。 然后,我在unity的googleplaydemoscript中输入了广告