NullPointerException в onResume, связанный с AdMob, но не знаю почему - PullRequest
0 голосов
/ 01 января 2012

Я получаю исключение nullpointer в следующем коде в моем приложении:

@Override
protected void onResume() {
    super.onResume();    //To change body of overridden methods use File | Settings | File Templates.

    // Create the adView
    adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);

    LinearLayout layout = (LinearLayout) findViewById(R.id.ad_layout);

    // Add the adView to it
    layout.addView(adView); //NullPointerException here

    // Initiate a generic request to load it with an ad
    adView.loadAd(new AdRequest());


    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    boolean isButtonLabelsEnabled = sp.getBoolean("isButtonLabelsEnabled", false);
    if (!isButtonLabelsEnabled) {
        stripLabels();
    } else {
        setContentView(R.layout.languageselection);
    }
}

Я не могу воспроизвести эту проблему, я поиграл со всеми функциями моего приложения на обоихэмулятор, устройство galaxy S2 и лезвие ZTE, но я не могу найти никаких проблем.

Многие пользователи сообщают об этом, но они не дают никаких объяснений, почему, только этоон закрывается, когда они пытаются открыть его.

Возможно, я не правильно использую жизненный цикл Android?

В качестве обходного пути я обернул материал AdMob в попытке /поймать, чтобы он мог пройти.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 02 января 2012

Попробуйте получить объект LinearLayout в методе onCreate, а не в методе onResume. Надеюсь, это работает для вас.

0 голосов
/ 01 января 2012

Попробуй так:

private LinearLayout layout;

onCreate(){

       layout = (LinearLayout) findViewById(R.id.ad_layout);

}


@Override
protected void onResume() {
    super.onResume();    //To change body of overridden methods use File | Settings | File Templates.

    // Create the adView
    adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);

    //LinearLayout layout = (LinearLayout) findViewById(R.id.ad_layout);

    // Add the adView to it
    layout.addView(adView); //NullPointerException here

    // Initiate a generic request to load it with an ad
    adView.loadAd(new AdRequest());


    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    boolean isButtonLabelsEnabled = sp.getBoolean("isButtonLabelsEnabled", false);
    if (!isButtonLabelsEnabled) {
        stripLabels();
    } else {
        setContentView(R.layout.languageselection);
    }
}
...