【问题标题】:Using andengine to display admob ads crashes code使用andengine显示admob广告崩溃代码
【发布时间】:2015-07-04 08:04:01
【问题描述】:

我正在使用 andengine,我想展示 admob 广告,但我的应用程序崩溃代码在扩展 basegameactivity 的主要活动中:

//代码

public class GameActivity extends BaseGameActivity
    @Override
    protected void onSetContentView() {
     adAdmob = (AdView)findViewById(id.admob_adView);
        if(adAdmob != null){
            return;
        }
//layout for andengine

    final FrameLayout frameLayout = new FrameLayout(this);
    final FrameLayout.LayoutParams frameLayoutLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
                                         FrameLayout.LayoutParams.MATCH_PARENT);

    final FrameLayout.LayoutParams adViewLayoutParams =
            new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
                                         FrameLayout.LayoutParams.WRAP_CONTENT,
                                         Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM);
    //AdRequest ad = new AdRequest(null);
    //adview 
    adAdmob = new AdView(this);
    adAdmob.setAdSize(AdSize.BANNER);
    adAdmob.setAdUnitId("ca-app-pub-7376050471332410");
    //AdRequest ad = new AdRequest.Builder().build();
    adAdmob.setAdListener(new AdListener() {
        public void onAdLoaded() 
        {

            }
        }

    );
    adAdmob.loadAd(new AdRequest.Builder().build());

    this.mRenderSurfaceView = new RenderSurfaceView(this);
    mRenderSurfaceView.setRenderer(mEngine,this);

    final android.widget.FrameLayout.LayoutParams surfaceViewLayoutParams =
            new FrameLayout.LayoutParams(super.createSurfaceViewLayoutParams());

    frameLayout.addView(this.mRenderSurfaceView, surfaceViewLayoutParams);
    frameLayout.addView(adAdmob, adViewLayoutParams);

    this.setContentView(frameLayout, frameLayoutLayoutParams);
}

【问题讨论】:

  • 请清楚地表达您的问题并编辑代码的第一行。
  • @renzo 我的应用工作正常,但是当我使用 admob 代码时它崩溃了

标签: admob andengine


【解决方案1】:

这对我有用。在此示例中,您不会在 xml 中创建视图。你应该把它放在你的 GameActivity 中:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    final DisplayMetrics displayMetrics = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);


    MainActivity.adView = new AdView(this);
    MainActivity.adView.setAdSize(com.google.android.gms.ads.AdSize.SMART_BANNER);
    MainActivity.adView.setAdUnitId("ca-app-pub-xxxxxxxxxxxxxxxxx"); // post your untId here
    com.google.android.gms.ads.AdRequest adrequest = new com.google.android.gms.ads.AdRequest.Builder().build(); 



    MainActivity.adView.loadAd(adrequest);

    RelativeLayout layout = (RelativeLayout)findViewById(R.id.relativeLayout);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);


    layout.addView(this.mRenderSurfaceView);



    layout.addView(MainActivity.adView, params);

}

然后我使用这些方法来显示和隐藏广告:

//Ads management
public void hideAds(){
    this.activity.runOnUiThread((new Runnable() {

        @Override
        public void run() {
            MainActivity.adView.setVisibility(View.INVISIBLE);
        }
    }));
}

public void showAds(){
    this.activity.runOnUiThread((new Runnable() {

        @Override
        public void run() {
            MainActivity.adView.setVisibility(View.VISIBLE);
        }
    }));
}

【讨论】:

  • Łukasz Motyczka 亲爱的问题仍然存在它仍然崩溃
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多