【发布时间】:2014-07-15 19:10:34
【问题描述】:
我正在尝试以编程方式将 adUnitId 设置为来自新 Google Play 服务(旧 AdMob)的广告。
我在 XML 中有这个(用于<include>):
<com.google.android.gms.ads.AdView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"/>
这在 onCreate():
AdView mAdview = (AdView)findViewById(R.id.adView);
mAdview.setAdUnitId(((App)getApplication()).getAdmobKey());
mAdview.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
findViewById(R.id.adView).setVisibility(View.VISIBLE);
}
});
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
mAdview.loadAd(adRequest);
我得到:
必须在调用 loadAd 之前设置广告尺寸和广告单元 ID。
因此,第二种选择是以编程方式制作广告。
新的 XML:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/adView"
/>
新代码:
AdView mAdview = new AdView(this);
...
((LinearLayout)findViewById(R.id.adView)).addView(mAdview);
mAdview.loadAd(adRequest);
但我得到了同样的错误。
我也尝试从 com.google.android.gms.ads.AdView 继承来制作自定义视图,但它是最终的。
有什么建议吗?
【问题讨论】:
-
我认为这种反应已经过时了。我没有构造函数 AdView(
, , ) -
我遇到了同样的问题,同样的异常。仅当 adUnitId 在 xml 中时才有效。
-
getAdmobKey()是做什么的? -
返回一个带有 adUnitId 的字符串