如何使用AndEngine显示来自Admob的插页式广告?

时间:2014-12-31 16:37:35

标签: android multithreading admob andengine

我正在使用andengine,我正在两个场景之间切换。我的目的是在转换之间添加插页式广告。到目前为止,这是我的代码:

public void showGameOver(){
 mainactivity=new MainActivity();

  mainactivity.runOnUiThread(new Runnable(){

        @Override
        public void run() {
            // TODO Auto-generated method stub

            interstitial = new InterstitialAd(mainactivity);
            interstitial.setAdUnitId("MY AD UNIT ID");

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


            interstitial.loadAd(adRequest);
            if (interstitial.isLoaded()) {
                interstitial.show();
              }


        }

    });

 interstitial.setAdListener(new AdListener() {
         @Override
         public void onAdLoaded() {

         }

         @Override
         public void onAdClosed() {
             // Proceed to the next level.
            setCurrentScene(gameover);
  res.engine.setScene(gameover);


  gameover.loadResources();
  gameover.create();
         }
     });      

}

以上代码(没有插页式广告代码)切换到我的配对场景。当我添加插页式广告代码时,我的应用会崩溃。插页式广告应该展示广告,当它关闭时,我的游戏场景应该显示。我输入了正确的广告单元ID。

Logcat说:无法在未调用looper.prepare()的线程内创建处理程序。

我搜索了这个,解决方案声明我必须把它放在runonuithread方法上,我做了。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您无法通过mainactivity=new MainActivity();实例化新活动并使用它。相反,你应该将游戏的基础活动传递给你的gameOver()方法并使用它:

public void showGameOver(Activity yourActivity){

  yourActivity.runOnUiThread(new Runnable(){

    @Override
    public void run() {
        // TODO Auto-generated method stub

        interstitial = new InterstitialAd(mainactivity);
        interstitial.setAdUnitId("MY AD UNIT ID");

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


        interstitial.loadAd(adRequest);
        if (interstitial.isLoaded()) {
            interstitial.show();
          }


    }

});