将Admob集成到Android应用程序中时获取RuntimeException

时间:2019-03-30 12:27:48

标签: android xml admob

我是Android编码的新手。最近,我制作了一个简单的计数应用程序,当我尝试向应用程序中添加广告时遇到了很多错误。我修复了大多数问题,但这是我一直要解决的问题。

这是我的XML代码的一部分:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:ads="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

   <com.google.android.gms.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="false"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="500dp"
        ads:adSize="BANNER"
        android:id="@+id/adView"
        ads:adUnitid="ca-app-pub-8871036677328731/4777520829">

    </com.google.android.gms.ads.AdView>

</RelativeLayout>

这是我的MainActivity.java(的一部分):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    MobileAds.initialize(this, "\"ca-app-pub-8871036677328731~4808121041\"");
    mAdView = (AdView)findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);
}

这是我的androidManifest(的一部分):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.courtcounter">
    <uses-permission android:name="android.permission.INTERNET">

    </uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">

    </uses-permission>


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
            <meta-data
                android:name="com.google.android.gms.ads.ca-app-pub- 
        8871036677328731~4808121041"
                android:value="ca-app-pub-8871036677328731~4808121041" />
        <meta-data
            android:name="com.google.android.gms.ads.AD_MANAGER_APP"
            android:value="true"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

这是我得到的错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.courtcounter.MainActivity}:
java.lang.IllegalStateException: The adSize and adUnitId must be set before loadAd is called.

我只是想看看是否可以在应用程序中添加横幅广告。请帮助解决此问题。

1 个答案:

答案 0 :(得分:0)

在调用loadAd()

之前以编程方式设置这两项
ads:adSize="BANNER"
ads:adUnitid="ca-app-pub-8871036677328731/4777520829"

喜欢:

mAdView.setAdSize(AdSize.BANNER);
mAdView.setAdUnitId(YOUR_BANNER_ID);
..
mAdView.loadAd(adRequest);

老实说,我不知道为什么xml不能按我们期望的那样工作。