Как Отобразить Admob Interstitial При Каждом Нажатии Кнопки

Я новичок, когда дело доходит до разработки Android. Это мое первое приложение. Я хотел бы знать, как отображать объявление Admob interstitial каждый раз, когда кнопка нажата. Мне удалось показать интерстициальное объявление, но только при первом нажатии кнопки. Тем не менее, я получаю ошибку при попытке загрузить объявление. Вот мой код:

package com.mycash.borgjake.mycash;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.widget.Button;
import android.widget.TextView;

import android.view.View;

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;

import static com.mycash.borgjake.mycash.R.styleable.View;

public class MainActivity extends AppCompatActivity {

private InterstitialAd mInterstitial;


Button btnClick;
Button btnWithdraw;

TextView txtBalance;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    AdView adView = (AdView)findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .build();
    adView.loadAd(adRequest);

    btnClick = (Button) findViewById(R.id.button);

    txtBalance = (TextView) findViewById(R.id.textView);

    btnClick.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String countValue = txtBalance.getText().toString();
            int dblCountValue = Integer.parseInt(countValue);

            if (mInterstitial.isLoaded()) {
                mInterstitial.show();
            }

            mInterstitial.loadAd(request); //<---ERROR

            dblCountValue++;
            txtBalance.setText(String.valueOf(dblCountValue));



        }
    });

    mInterstitial = new InterstitialAd(this);
    mInterstitial.setAdUnitId("ca-app-pub-2245289628812463/9905502438");
    AdRequest request = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .build();
    mInterstitial.loadAd(request);

}

public void onButtonClick(View v) {
    if(v.getId() == R.id.button2) {
        Intent i = new Intent(MainActivity.this, Withdraw.class);
        startActivity(i);
    }
  }
}

Спасибо за помощь заранее. 🙂

2 ответа

  1. вы не должны вызывать эту функцию mInterstitial.loadAd(request);каждый раз

    или если вы хотите, чтобы назвать это назвать это так

    mInterstitial.loadAd(request);
      if (mInterstitial.isLoaded()) {
                        mInterstitial.show();
      }
    

    или удалить это mInterstitial.loadAd(request);из Каждый раз, когда вы нажимаете кнопку .

  2. Просто создайте функцию и вызовите ее в любом месте, когда вам это нужно :

    public static void getAd(Context c) {
    
            //================Ad-section
            // Prepare the Interstitial Ad
            interstitial = new InterstitialAd(c);
            // Insert the Ad Unit ID
            interstitial.setAdUnitId("ca-app-pub-YOUR/ID");
    
            // Request for Ads
                    AdRequest adRequest = new AdRequest.Builder()
                    .build();
    
                    // Load ads into Interstitial Ads
                    interstitial.loadAd(adRequest);
    
                    interstitial.setAdListener(new AdListener() {
                        public void onAdLoaded() {
                            // Call displayInterstitial() function
                            displayInterstitial();
                        }
                    });
                }
                public static void displayInterstitial() {
                    // If Ads are loaded, show Interstitial else show nothing.
                    if (interstitial.isLoaded()) {
                        interstitial.show();
                    }
          //=======================
        }
    

    Для запуска в эмуляторе или тестовом устройстве используйте :

    public static void getAd(Context c) {
    
                //================Ad-section
            // Prepare the Interstitial Ad
            interstitial = new InterstitialAd(c);
            // Insert the Ad Unit ID
            interstitial.setAdUnitId("ca-app-pub-YOUR/ID");
    
            AdRequest request = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .build();
        mInterstitial.loadAd(request);
    }
    

    Вызов функции :

    getAd(getApplicationContext());