2

ランダムに選択された秒数でアプリにフルスクリーンの Facebook 広告を表示したいと考えています。

  @Override
    public void onAdLoaded(Ad ad) {
        // Ad is loaded and ready to be displayed
        // You can now display the full screen ad using this code:
        int milliSeconds = getRandomSeconds(5000, 10000);
        showFbFullScreenAdAfter(milliSeconds);
    }

    @Override
    public void onAdClicked(Ad ad) {

    }

    private int getRandomSeconds(int low, int high) {
        Random r = new Random();
        int result = r.nextInt(high - low) + low;
        return result;
    }

    private void showFbFullScreenAdAfter(int miliSeconds) {
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //Do something after 100ms
                if(interstitialAd != null)
                {
                    interstitialAd.show();
                }
            }
        }, miliSeconds);
    }

しかし、呼び出し

interstitialAd.show();

このクラッシュが発生します。

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.facebook.ads.internal.DisplayAdController.c()' on a null object reference
       at com.facebook.ads.InterstitialAd.show(Unknown Source)
       at com.appster.map.MapActivity$1.run(MapActivity.java:161)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5551)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

null チェックが配置される前に、null チェックを配置した後でも、これが発生します。理由はありますか?

4

0 に答える 0