如何解决AdView nullpointerexception错误

时间:2014-09-05 21:50:21

标签: android nullpointerexception google-play admob

我已将Google Play服务库更新为最新版本。 5.0.8.9,我按照Google开发者网站上的说明创建了AdMob横幅广告。

但是,当我运行应用程序时,当活动管理器对AdView视图进行夸大时,我会得到一个java nullpointerexception。

如果我在XML中或在运行时在java代码中创建AdView无关紧要。

这是我的活动的OnResume代码,其中发生了错误。

    @Override
    protected void onResume() {
        super.onResume();

        final int connectionStatusCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

        if (connectionStatusCode == ConnectionResult.SUCCESS) {
            adView = (AdView) this.findViewById(R.id.bannerAdView);

            AdRequest adRequest = new AdRequest
                .Builder()
                .build();

            adView.loadAd(adRequest);
        }
  }// end onResume

我的活动的XML代码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/yourbasiclayout"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="2dp"
        android:paddingRight="2dp"
    >
        <TextView android:id="@+id/myAdView_Label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="16sp"
            android:textStyle="bold"
            android:text="Google Ads"/>

        <com.google.ads.AdView
            android:id="@+id/bannerAdView"
            android:layout_width="fill_parent"
            android:layout_height="10dp"
            ads:adUnitId="MyBannerAdId"
            ads:adSize="BANNER" />
    </LinearLayout>

2 个答案:

答案 0 :(得分:2)

您在布局xml文件中使用了已弃用的API(<com.google.ads.AdView)。变化:

 <com.google.ads.AdView 
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ads:adUnitId="MyId"
        ads:adSize="BANNER" />

为:

<com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ads:adUnitId="MY_AD_UNIT_ID"
        ads:adSize="BANNER"/>

确保您也导入正确的类:

import com.google.ads.AdRequest;
import com.google.ads.AdView;

而不是:

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

您可以按照有关迁移到新admob here的官方指南进行操作。

答案 1 :(得分:1)

您仍然拥有xml中的旧版Admob视图元素:

 <com.google.ads.AdView
        android:id="@+id/bannerAdView"
        android:layout_width="fill_parent"
        android:layout_height="10dp"
        ads:adUnitId="MyBannerAdId"
        ads:adSize="BANNER" />

将其替换为google play admob(注意com.google.android.gms.ads.AdView):

<com.google.android.gms.ads.AdView
   android:id="@+id/bannerAdView"
   android:layout_width="match_parent"
   android:layout_height="10dp"
   ads:adUnitId="MyBannerAdId"
   ads:adSize="BANNER"/>

另请检查您导入Google Play AdView的活动代码,而不是旧版的。

请参阅此处的指南: https://developers.google.com/mobile-ads-sdk/docs/admob/android/play-migration