1

我注意到在使用 Mopub SDK 显示广告布局时,有时会在我的 Android 应用程序中崩溃。我从来没有能够重现这个问题,它从来没有发生在我的设备上。

这是包含广告横幅的布局:

<LinearLayout 
    android:id="@+id/layout_ads"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone"
>   

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="@color/list_divider"
    />

    <com.mopub.mobileads.MoPubView
        android:id="@+id/adview"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/ad_height"
    />        
</LinearLayout>

这是崩溃发生的地方:

View adsLayout = null;
@Override
protected void onResume() {
  super.onResume();
  ...
  adsLayout = findViewById(R.id.layout_ads);
  ...
  if (adsLayout != null)
     adsLayout.setVisibility(View.GONE);
  ...
}

@Override
public void onBannerLoaded(MoPubView arg0) {
    if (adsLayout != null)
        adsLayout.setVisibility(View.VISIBLE);
}

这是困扰我的错误:

java.lang.NullPointerException
       at android.webkit.WebViewClassic.requestFocus(WebViewClassic.java:6997)
       at android.webkit.WebView.requestFocus(WebView.java:2044)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2477)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:2433)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2477)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:2433)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2477)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:2433)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2477)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:2433)
       at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2477)
       at android.view.ViewGroup.requestFocus(ViewGroup.java:2433)
       at android.view.View.requestFocus(View.java:6487)
       at android.view.View.requestFocus(View.java:6466)
       at android.view.ViewRootImpl.focusableViewAvailable(ViewRootImpl.java:2609)
       at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:708)
       at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:708)
       at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:708)
       at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:708)
       at android.view.View.setFlags(View.java:8377)
       at android.view.View.setVisibility(View.java:5575)
       at myapp.MyActivity.onBannerLoaded(MyActivity.java:129)
       at com.mopub.mobileads.MoPubView.adLoaded(MoPubView.java:247)
       at com.mopub.mobileads.MoPubView.nativeAdLoaded(MoPubView.java:287)
       at com.mopub.mobileads.CustomEventBannerAdapter.onBannerLoaded(CustomEventBannerAdapter.java:100)
       at com.mopub.mobileads.GoogleAdMobBanner.onReceiveAd(GoogleAdMobBanner.java:170)
       at com.google.ads.internal.d.E(SourceFile:1180)
       at com.google.ads.internal.c$e.run(SourceFile:214)
       at android.os.Handler.handleCallback(Handler.java:615)
       at android.os.Handler.dispatchMessage(Handler.java:92)
       at android.os.Looper.loop(Looper.java:213)
       at android.app.ActivityThread.main(ActivityThread.java:4788)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:511)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
       at dalvik.system.NativeStart.main(NativeStart.java)

对这个问题有任何想法吗?

4

1 回答 1

0

移至 。adsLayout = findViewById(R.id.layout_ads); _onCreate(..)

你得到一个空指针,因为onResume(..)之前没有被调用onBannerLoaded().

于 2014-01-27T08:17:02.947 回答