Search code examples
javaandroidadmobinterstitial

How to display Admob interstitial every time a button is clicked?


I would like to know how to display a Admob interstitial ad every time a button is pressed. I have managed to display a interstitial ad, but only on the first time the button is pressed. Here is my code:

 package hamza.gforx.com.guforx;

 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import com.google.android.gms.ads.AdRequest;
 import com.google.android.gms.ads.AdView;
 import com.google.android.gms.ads.InterstitialAd;
 import com.google.android.gms.ads.AdListener;



   public class MainActivity extends AppCompatActivity {
    // "ca-app-pub-3940256099942544/1033173712"
    InterstitialAd mInterstitialAd;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     mInterstitialAd = new InterstitialAd(this);

     // set the ad unit ID
     mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");

     AdRequest adRequest = new AdRequest.Builder().build();

    // Load ads into Interstitial Ads
      mInterstitialAd.loadAd(adRequest);


      mInterstitialAd.setAdListener(new AdListener() {

        @Override
        public void onAdClosed() {
            super.onAdClosed();
         }

         @Override
         public void onAdFailedToLoad(int i) {
             super.onAdFailedToLoad(i);
         }

         @Override
         public void onAdLeftApplication() {
             super.onAdLeftApplication();
         }

         @Override
         public void onAdOpened() {
            super.onAdOpened();
         }

         public void onAdLoaded() {
             if (mInterstitialAd.isLoaded()) {
             }
          }
      });
  }



    public void onButtonClick(View v) {
     if (mInterstitialAd.isLoaded()) {
        mInterstitialAd.show();
    }
    if (v.getId() == R.id.Bdisplay) ;
    {
        Intent i =new Intent(MainActivity.this, Display.class);
        startActivity(i);
    }

   }


      public void onButton1(View v1) {
          if (mInterstitialAd.isLoaded()) {
              mInterstitialAd.show();
          }
          if (v1.getId() == R.id.Button1) ;
           {
            Intent o =new Intent(MainActivity.this, Page.class);
            startActivity(o);
           }

       }


   public void onButton2(View v2) {
    if (v2.getId() == R.id.Button2) ;
    {
        Intent q =new Intent(MainActivity.this, Page2.class);
        startActivity(q);
    }
     if (mInterstitialAd.isLoaded()) {
         mInterstitialAd.show();
    }

  }

}

Thanks in advance .


Solution

  • You need to load loadIntersitialAd whenever you close you Ad for next display so call loadIntersitialAd() inside onAdClosed() method.

    mInterstitialAd.setAdListener(new AdListener() {
    
        @Override
        public void onAdClosed() {
            loadIntersitialAd();
         }
    
         @Override
         public void onAdFailedToLoad(int i) {
    
         }
    
         @Override
         public void onAdLeftApplication() {
    
         }
    
         @Override
         public void onAdOpened() {
    
         }
    
         public void onAdLoaded() {
    
         }
      });
    
    private void loadIntersitialAd(){
    
        AdRequest interstitialRequest = new AdRequest.Builder().build();
        mInterstitialAd.loadAd(interstitialRequest);
    }