ランダムに選択された秒数でアプリにフルスクリーンの 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 チェックを配置した後でも、これが発生します。理由はありますか?