2014-09-05 5 views
0

Я обновил библиотеку Служб Google Play до последней версии. 5.0.8.9, и я выполнил инструкции на сайте разработчика Google для создания объявления AdMob Banner.Как разрешить ошибки, связанные с отображением nullViewinterexView

Однако, когда я запускаю приложение, я получаю java nullpointerexception, когда представление AdView раздувается менеджером активности.

Не имеет значения, создаю ли я AdView в XML или во время выполнения в Java-коде.

Вот код 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> 

ответ

1

У вас есть еще унаследованный Admob элемент представления в XML:

<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

+1

Спасибо, человек! Я нашел сообщение ранее, чтобы проверить мои импортные файлы в файле Java, чтобы убедиться, что я пользуюсь библиотеками сервисов Google. Но я не думал проверять источник XML-элемента. Ответы на проблемы иногда кажутся такими простыми и очевидными, когда известно, где искать ... – Bryan

2

Вы используете устаревший API (<com.google.ads.AdView) в файле XML макет. Изменение:

<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.

+0

хороший ответ, но 4 минуты поздно ;-) – donfuxx

+1

да, спасибо Нане, если бы вы были первыми, я бы выбрал ваш ответ. Donfuxx был первым, и его ответ был именно тем, что я искал. – Bryan

+0

Нет проблем. Самое главное - решить вашу проблему :) –

Смежные вопросы