Когда я пытаюсь загрузить межстраничное объявление, я получаю следующую ошибку:

02-25 10:24:58.198    2310-2310/template.maintemplate E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: template.maintemplate, PID: 2310
java.lang.RuntimeException: Unable to start activity ComponentInfo{template.maintemplate/template.maintemplate.sover}: java.lang.IllegalStateException: The ad unit ID must be set on InterstitialAd before loadAd is called.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
        at android.app.ActivityThread.access$800(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 Caused by: java.lang.IllegalStateException: The ad unit ID must be set on InterstitialAd before loadAd is called.
        at com.google.android.gms.internal.bi.w(Unknown Source)
        at com.google.android.gms.internal.bi.v(Unknown Source)
        at com.google.android.gms.internal.bi.a(Unknown Source)
        at com.google.android.gms.ads.InterstitialAd.loadAd(Unknown Source)
        at template.maintemplate.sover.onCreate(sover.java:97)
        at android.app.Activity.performCreate(Activity.java:5933)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)

Код, который я использовал для запроса межстраничного объявления, находится непосредственно под кодом, который я использую для запроса баннера (который работает):

// Ads...
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);

// Create the interstitial.
interstitial = new InterstitialAd(this);
//interstitial.setAdUnitId(AdRequest.DEVICE_ID_EMULATOR);
// Create ad request.
AdRequest adRequestI = new AdRequest.Builder().addTestDevice("B3EEABB8EE11C2BE770B684D95219").build();
// Begin loading your interstitial.
interstitial.loadAd(adRequestI);

Строка 97 - последняя строка в приведенном выше примере. Я пробовал использовать interstitial.setAdUnitId(AdRequest.DEVICE_ID_EMULATOR) вместо addTestDevice, который не выдает ошибок, но также не загружает межстраничное объявление.

1
Firona 25 Фев 2015 в 13:42

2 ответа

Лучший ответ

Вы загружаете свое объявление перед установкой идентификатора:

AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);// <-- Here 

Удалите первый вызов, чтобы получить:

// Create the interstitial.
interstitial = new InterstitialAd(this);
//interstitial.setAdUnitId(AdRequest.DEVICE_ID_EMULATOR);
// Create ad request.
AdRequest adRequestI = new AdRequest.Builder().addTestDevice("B3EEABB8EE11C2BE770B684D95219").build();
// Begin loading your interstitial.
interstitial.loadAd(adRequestI);

Кроме того, объявите этот метод:

// Invoke displayInterstitial() when you are ready to display an interstitial.
  public void displayInterstitial() {
    if (interstitial.isLoaded()) {
      interstitial.show();
    }
  }
3
s_bei 25 Фев 2015 в 10:46

Вы должны установить AdUnitId перед загрузкой Ads

    mAdView = (AdView)findViewById(R.id.adView);
    mAdView.setAdSize(AdSize.SMART_BANNER);
    mAdView.setAdUnitId("ca-app-pub-160126019342****/405183****");
    AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
    adRequestBuilder.addTestDevice("B3EEABB8EE11C2BE770B684D95219ECB");

    mAdView.loadAd(adRequestBuilder.build());
0
Niranj Patel 25 Фев 2015 в 10:51