Java 以编程方式设置时,必须在装入ad之前设置ad大小和ad单元ID
我不知道这里发生了什么,但我正试图通过如下代码动态设置我的广告单元ID,并将其从XML中删除,但仍然会出现错误: 在调用loadAd之前,必须设置ad大小和ad单元IDJava 以编程方式设置时,必须在装入ad之前设置ad大小和ad单元ID,java,android,admob,adview,Java,Android,Admob,Adview,我不知道这里发生了什么,但我正试图通过如下代码动态设置我的广告单元ID,并将其从XML中删除,但仍然会出现错误: 在调用loadAd之前,必须设置ad大小和ad单元ID 以编程方式创建它 View adContainer = findViewById(R.id.adMobView); AdView mAdView = new AdView(context); mAdView.setAdSize(AdSize.BANNER); mAdView.setAdUnitId(YOUR_BANNER_ID
以编程方式创建它
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);
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文件中
<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>
并在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);
((RelativeLayout)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);
adContainer.addView(mAdView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
我使用横幅很长一段时间了,这个答案对我很好。你有
android:layout_width="wrap_content"
android:layout_height="wrap_content"
发件人:
注意:布局中的智能横幅视图必须占用设备的全部宽度。如果没有,您将收到一条警告消息“没有足够的空间显示广告”,横幅将不会显示
换成
android:layout_width="match_parent"
并在xml文件中设置adUnitID
ads:adUnitId="AD_UNIT_ID"
对我来说,我是这样设置广告类型的:
ads:adSize="Banner"
但应为所有CAP:
ads:adSize="BANNER"
我是这样做的
<LinearLayout xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/ll_main_screen_container"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content"
android:orientation="horizontal"/>
</LinearLayout>
这解决了我的问题
不要用这个
xmlns:ads="http://schemas.android.com/tools"
试过之后,
xmlns:ads=”http://schemas.android.com/apk/res-auto“
根布局中的行app:adSize=“智能旗帜”
app:adUnitId=“@string/banner\u ad\u unit\u id”
将此添加到布局中
xmlns:ads="http://schemas.android.com/apk/res-auto"
通过在xml文件中手动设置ads:adUnitId=“UNITID”来尝试一次。如果无法获得您试图设置的add unit Id,您应该通过注册ca-app-pub-3940256099942544/630978111从admob获得它。是的,您可以,我想我的解决方案不是您想要的,所以我做了一项研究,发现了与您相同的问题,请阅读这个解决方案,我没有看到解决方案,除了有一个容器的东西,并在其中注入广告。这是唯一的方法吗?@MikeFlynn正确-您在Java代码中引用容器并将AdView添加到其中。当您在XML中调用com.google.android.gms.ads.AdView时,当您调用setContentView(some_layout.XML)时,它会被实例化,并且可以在没有Java的情况下轻松配置。当您动态地执行它时,它会被构建和绑定。如果你想要一个不同的adview(size/id),你必须创建一个不同的adview。@MorrisonChang我使用容器(RelativeLayout)的方式是因为我必须在同一个容器中使用另一个Banners API,然后在失败的情况下通过编程设置Banners视图。很好的解释,非常重要的是,您不能将AdView声明为xml并以编程方式设置adUnit和adSize!我以前犯过那个错误,但我改正了。这不是一回事。即使我用xml布局编写所有代码,仍然会出现错误。谢谢你提醒我这句话。
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:ads="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"