首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Admob中播放奖励视频时的java.lang.NullPointerException

在Admob中播放奖励视频时的java.lang.NullPointerException
EN

Stack Overflow用户
提问于 2016-01-29 21:42:00
回答 1查看 1.5K关注 0票数 1

在安卓中,当我试图在Admob中加载广告,但没有互联网连接时,代码到达onRewardedVideoAdFailedToLoad(),在一段时间后,比如说30秒后,应用程序强制关闭,并出现下面提到的错误。

我希望这不是我能处理的空指针异常。我猜这是在SDK中发生的。请告诉我如何解决这个问题。

代码

代码语言:javascript
复制
private void setRewardedVideo() {
    rewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
    rewardedVideoAd.setUserId(REWARD);
    AdRequest adRequest = new AdRequest.Builder().build();
    rewardedVideoAd.loadAd(AD_UNIT_ID_REWARDED_VIDEO_AD, adRequest);

    rewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener() {
        @Override
        public void onRewardedVideoAdLoaded() {
            System.out.println("onRewardedVideoAdLoaded()");
            if (rewardedVideoAd.isLoaded()) {
                rewardedVideoAd.show();
            }
        }

        @Override
        public void onRewardedVideoAdOpened() {
            System.out.println("onRewardedVideoAdOpened()");

        }

        @Override
        public void onRewardedVideoStarted() {
            System.out.println("onRewardedVideoStarted()");

        }

        @Override
        public void onRewardedVideoAdClosed() {
            System.out.println("onRewardedVideoAdClosed()");

        }

        @Override
        public void onRewarded(RewardItem rewardItem) {
            System.out.println("onRewarded()");

        }

        @Override
        public void onRewardedVideoAdLeftApplication() {
            System.out.println("onRewardedVideoAdLeftApplication()");

        }

        @Override
        public void onRewardedVideoAdFailedToLoad(int i) {
            System.out.println("onRewardedVideoAdFailedToLoad()");

        }
    });
}

Logcat

代码语言:javascript
复制
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewParent com.google.android.gms.ads.internal.au.getParent()' on a null object reference
        at com.google.android.gms.ads.internal.a.b(SourceFile:513)
        at com.google.android.gms.ads.internal.b.b(SourceFile:318)
        at com.google.android.gms.ads.internal.a.c(SourceFile:520)
        at com.google.android.gms.ads.internal.aq.run(SourceFile:64)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5296)
        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)
EN

回答 1

Stack Overflow用户

发布于 2016-01-29 21:46:07

在尝试加载广告之前确保用户有连接,尽管没有互联网,但AdMob可能存在一些更深层次的问题,迫使用户使用NPE。

代码语言:javascript
复制
private void setRewardedVideo() {
    if (!isNetworkAvailable()) {
        // Log no internet
        return;
    }

    rewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
    rewardedVideoAd.setUserId(REWARD);
    ....
}

在尝试使用adMob之前,确保用户拥有互联网甚至可能是有意义,以防是他们的库中的某些东西导致了问题。请参阅this answer了解这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35086005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档