【问题标题】:Ad is not visible. Not refreshing ad广告不可见。不刷新广告
【发布时间】:2014-02-24 18:39:18
【问题描述】:

我制作了一个免费的安卓游戏,我想给它添加一个横幅。我关注了this tutorial,但我不知道为什么它不起作用。

当我在 LogCat 中的模拟器上运行我的游戏时,我看到一条消息“广告不可见。未刷新广告。”当我在手机上安装游戏时,我也看不到任何广告。

这是我的 main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:ads="http://schemas.android.com/apk/res-auto"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
  <com.google.android.gms.ads.AdView android:id="@+id/adView"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         ads:adUnitId="hidden"
                         ads:adSize="BANNER"/>
</LinearLayout>

这是 MainActivity.java 中的代码

public class MainActivity extends AndroidApplication {
    private AdView adView;

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

        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = true;
        cfg.useAccelerometer = true;
        cfg.useCompass = true;

        setContentView(R.layout.main);

        // Look up the AdView as a resource and load a request.
        adView = (AdView)this.findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);

        initialize (new RedSquare(), cfg);
    }

    @Override
    public void onPause() {
      adView.pause();
      super.onPause();
    }

    @Override
    public void onResume() {
      super.onResume();
      adView.resume();
    }

    @Override
    public void onDestroy() {
      adView.destroy();
      super.onDestroy();
    }
}

【问题讨论】:

    标签: java android eclipse libgdx admob


    【解决方案1】:

    我发现使用adMob 在文件中明确定义布局可能是一个非常令人头疼的生成器,因为有时它可能会因某些参数和布局组合而变得难以预测。似乎总是有效的是将AdView动态添加到一些LinearLayout

    这应该可行:

    final LinearLayout fragLayout = (LinearLayout) inflater.inflate(R.layout.your_layout, container, false);
    final AdView adView = new AdView(getActivity());
    adView.setAdUnitId("your-admob-id");
    adView.setAdSize(AdSize.BANNER);
    
    // Here you'll append the new AdView
    final LinearLayout publiView = (LinearLayout) fragLayout.findViewById(R.id.publi);
    publiView.addView(adView);
    
    final AdRequest.Builder adReq = new AdRequest.Builder();
    // You should include a line like this for testing purposes,
    // but only after you've tested whether your AdView works!
    // This will prevent your ad being loaded each time you test
    // your ad, so it will prevent you being blocked from AdMob.
    // You'll find your device_id in the LogCat.
    adReq.addTestDevice("your_device_id");
    
    final AdRequest adRequest = adReq.build();
    adView.loadAd(adRequest);
    

    ---- 编辑----

    此实现适用于 Fragments,您可能正在运行 Activity,这就是您收到这些错误的原因。

    • getActivity()替换为this

    • inflater 只是(正如它的名字所说)从布局文件中扩充一个新的LinearLayout。这意味着我已经定义了一个布局,我称之为your_layout 并在LinearLayout 中定义。充气机只是创建了一个 `LinearLayout.在您的情况下,可能没有必要。

    我正在添加一个可能对你有用的代码:

    final LinearLayout yourLayout = (LinearLayout) findViewById(R.id.your_linearlayout_id_where_you_want_to_put_your_adview);
    
    final AdView adView = new AdView(this);
    adView.setAdUnitId("your-admob-id");
    adView.setAdSize(AdSize.BANNER);
    
    yourLayout.addView(adView);
    
    final AdRequest.Builder adReq = new AdRequest.Builder();
    // You should include a line like this for testing purposes,
    // but only after you've tested whether your AdView works!
    // This will prevent your ad being loaded each time you test
    // your ad, so it will prevent you being blocked from AdMob.
    // You'll find your device_id in the LogCat.
    adReq.addTestDevice("your_device_id");
    
    final AdRequest adRequest = adReq.build();
    adView.loadAd(adRequest);
    

    【讨论】:

    • 感谢您的回复。我是 Java 新手,不知道如何解决这个问题……尝试运行代码时出现一些错误,inflater 和 getActivity() 未定义。你能写出我到底应该写什么才能编译它而不会出错。
    • 现在它编译没有问题,但是当我尝试运行游戏时它在启动后立即崩溃。 :(
    • 使用完整的堆栈跟踪更新您的问题
    • 添加这个 -> "yourLayout.addView(adView);"用片段,拯救了我的一天!很棒。
    【解决方案2】:

    要在 libgdx 中展示广告,您需要初始化您的应用查看。所以,替换所有这些:

    setContentView(R.layout.main);
    
    // Look up the AdView as a resource and load a request.
    adView = (AdView)this.findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    adView.loadAd(adRequest);
    
    initialize (new RedSquare(), cfg);
    

    有了这个:

    RelativeLayout layout = new RelativeLayout(this);
    
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    View gameView = initializeForView(new RedSquare(), cfg);
    
    AdView AdView = new AdView(this);
    AdView.setAdSize(AdSize.SMART_BANNER);
    AdView.setAdUnitId("***"); //The AdUnitId
    AdRequest.Builder adRequest = new AdRequest.Builder();
    adRequest.addTestDevice("***"); //Your Test device if any
    AdView.loadAd(adRequest.build());
    
    layout.addView(gameView);
    
    RelativeLayout.LayoutParams adParams = 
        new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                        RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    
    layout.addView(AdView, adParams);
    
    setContentView(layout);
    

    【讨论】:

      【解决方案3】:

      您的布局没有什么特别的问题。虽然我可能会将 AdView 的 layout_width 更改为:

      android:layout_width="match_parent"
      

      但不清楚是什么

      initialize (new RedSquare(), cfg);
      

      在做什么?我怀疑它正在改变布局。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多