2015-03-11 4 views
-1

Я хочу добавить межстраничные объявления в свою игру. Пример кода, который я нашел, работает отлично, но проблема в том, что он появляется только один раз при запуске моего приложения. Я хочу контролировать рекламу объявления и вызывать метод displayInterstitial() в других классах, например, из класса GameScreen. Как я могу вызывать рекламу из любого другого класса?Как я могу управлять admob Interstitial Ads на Android?

import com.google.android.gms.ads.*; 

public class BannerExample extends Activity { 

    private InterstitialAd interstitial; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Create the interstitial. 
    interstitial = new InterstitialAd(this); 
    interstitial.setAdUnitId(MY_AD_UNIT_ID); 

    // Create ad request. 
    AdRequest adRequest = new AdRequest.Builder().build(); 

    // Begin loading your interstitial. 
    interstitial.loadAd(adRequest); 

    } 

    // Invoke displayInterstitial() when you are ready to display an interstitial. 
    public void displayInterstitial() { 
    if (interstitial.isLoaded()) { 
     interstitial.show(); 
    } 
    } 
} 

ответ

0

Для достижения этой цели вы можете использовать фасад. Убедитесь, что вы делаете вызовы из потока пользовательского интерфейса. Следующие должны работать:

Определить интерфейс для примера MyAdListener.java:

public interface MyAdListener{ 
public void displayInterstitial(); 
} 

В основной деятельности вашей игры, реализовать интерфейс:

public class BannerExample extends Activity implements MyAdListener{ 
    private InterstitialAd interstitial; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Create the interstitial. 
    interstitial = new InterstitialAd(this); 
    interstitial.setAdUnitId(MY_AD_UNIT_ID); 

    // Create ad request. 
    AdRequest adRequest = new AdRequest.Builder().build(); 

    // Begin loading your interstitial. 
    interstitial.loadAd(adRequest); 

    } 

    // Invoke displayInterstitial() when you are ready to display an interstitial. 

@Override 
    public void displayInterstitial() { 
    runOnUiThread(new Runnable() { 
    @Override 
    public void run(){ 
    if (interstitial.isLoaded()) interstitial.show(); 
    } 
    }); 
} 



Then finally in your game screen's class: 

public class GameScreen extends View implements Runnable{ 
    MyAdListener myAdListener; 

    public GameScreen(Context context){ 
    myAdListener = (MyAdListener)context; 
    //display the interstitial ad 
    myAdListener.displayInterstitial(); 
    } 
} 

Позвольте мне знать, если вам нужна дополнительная помощь

+0

Последняя вещь, чтобы назвать ее на экране моей игры, не работает для меня, потому что я расширяю и реализую много других классов, и у меня есть другой конструктор, и я не могу получить свой контекст есть ли другой способ назвать это откуда угодно? – hzuuu

+0

Я получаю этот странный erros :(03-12 03: 22: 32.778: W/System.err (17810): java.lang.NullPointerException: попытка вызвать метод интерфейса 'void com.musti.sario.util.MyAdListener.displayInterstitial() 'на ссылке нулевого объекта – hzuuu

+0

Как определяется конструктор вашего игрового экрана? Пожалуйста, разместите свой класс GameScreen –