In Open activity oncreate() I am calling my setAdmob() function to show a launch interstitial ad ,it working fine in my all devices we also tested in all version devices like android 9 10 13, no crashes recorded but when app is live on play store it crashing with error,
I am showing the ad and adding callback inside onadloaded but still it giving the same crash
how can I reproduce and fix it ?
Exception java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.interstitial.InterstitialAd.show(android.app.Activity)' on a null object reference
at com.colorsplashphoto.android.activity.OpenActivity$11$3.run (OpenActivity.java:949)
at android.os.Handler.handleCallback (Handler.java:942)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loopOnce (Looper.java:240)
at android.os.Looper.loop (Looper.java:351)
at android.app.ActivityThread.main (ActivityThread.java:8377)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:584)
My setAdmob method
private void setAdmodAds() {
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(this, INTERSTITIAL_AD_ID1, adRequest, new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
super.onAdLoaded(interstitialAd);
if (!msharedPreferences.getBoolean("privacy_start_clicked",false)) {
showLoadingAdDialog();
}
interstitial = interstitialAd;
interstitial.setOnPaidEventListener(new OnPaidEventListener() {
@Override
public void onPaidEvent(@NonNull AdValue adValue) {
commonMethods.Paid_Ad_Impression(adValue,INTERSTITIAL_AD_ID1);
commonMethods.Daily_Ads_Revenue(adValue);
}
});
Log.e("TAG", "onAdLoaded");
countdownStart = true;
interstitial.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdDismissedFullScreenContent() {
// Called when fullscreen content is dismissed.
//AppUtils.adDismissed = true;
AppController.FULL_SCREEN_AD_SHOWNing = false;
adLoadingLayout.setVisibility(View.GONE);
if(loadingdialog!=null){
if(loadingdialog.isShowing()){
loadingdialog.dismiss();
}
}
interstitial = null;
commonMethods.saveBoolean("privacy_start_clicked",false,context);
Log.e("TAG", "onAdDismissedFullScreenContent");
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when fullscreen content failed to show.
// AppUtils.adDismissed = true;
AppController.FULL_SCREEN_AD_SHOWNing = false;
if(loadingdialog!=null ){
if(loadingdialog.isShowing()){
loadingdialog.dismiss();
}
}
commonMethods.saveBoolean("privacy_start_clicked",false,context);
adLoadingLayout.setVisibility(View.GONE);
showLangScreen();
interstitial = null;
Log.d("TAG", "onAdFailedToShowFullScreenContent");
}
@Override
public void onAdShowedFullScreenContent() {
// Called when fullscreen content is shown.
// Make sure to set your reference to null so you don't
// show it a second time.
AppController.FULL_SCREEN_AD_SHOWNing = true;
Log.d("TAG", "onAdShowedFullScreenContent");
commonMethods.saveBoolean("privacy_start_clicked",false,context);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(loadingdialog!=null){
if(loadingdialog.isShowing()){
loadingdialog.dismiss();
}
}
adLoadingLayout.setVisibility(View.GONE);
}
}, 500);
showLangScreen();
Log.d("TAG", "The ad was shown.");
}
});
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(interstitial!=null){
interstitial.show(OpenActivity.this);
}
}
}, 1000);
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
super.onAdFailedToLoad(loadAdError);
// Log.e("TAG", " main ad failed");
Log.e("TAG", loadAdError.getMessage());
countdownStart = true;
AppController.FULL_SCREEN_AD_SHOWNing = false;
if(loadingdialog!=null){
if(loadingdialog.isShowing()){
loadingdialog.dismiss();
}
}
adLoadingLayout.setVisibility(View.GONE);
interstitial = null;
showLangScreen();
}
});
}