当前位置: 首页 > 知识库问答 >
问题:

Android应用程序显示广告或应用程序屏幕,而不是两者都显示

平嘉熙
2023-03-14

我很难同时运行我的广告和应用程序。我花了两天的时间试图找到一个解决方案,但什么都没用。请帮忙。

这段代码显示我的google play services Admob广告——广告显示,但我看不到我的游戏屏幕,它是黑色背景。

public class MainActivity extends AndroidApplication {
    private static final String TEST_DEVICE_ID = "8FB8CE7A6B82BA648ED21C697F4076";


    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;

   initialize(new ZBGame(), cfg); 
   setContentView(R.layout.main);  

        // The "loadAdOnCreate" and "testDevices" XML attributes no longer available.
       AdView adView = (AdView) this.findViewById(R.id.adView);
       AdRequest adRequest = new AdRequest.Builder()
           .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
          .addTestDevice(TEST_DEVICE_ID)
          .build();
       adView.loadAd(adRequest);
    }

此代码(注释掉的广告代码)成功运行我的游戏。是什么原因导致这两种方法无法协同工作?

public class MainActivity extends AndroidApplication {
    private static final String TEST_DEVICE_ID = "8FB8CE7A6B82BA648ED21C697F4076";


    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;

   initialize(new ZBGame(), cfg); 
  // setContentView(R.layout.main);  

//        // The "loadAdOnCreate" and "testDevices" XML attributes no longer available.
//       AdView adView = (AdView) this.findViewById(R.id.adView);
//       AdRequest adRequest = new AdRequest.Builder()
//           .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
//          .addTestDevice(TEST_DEVICE_ID)
//          .build();
//       adView.loadAd(adRequest);
  }

你好,威廉。我刚刚开始学习Java,我使用的教程已经开始了http://www.kilobolt.com/zombie-bird-tutorial-flappy-bird-remake.html.

我的应用程序和广告也很好用。经过一段时间的测试,我意识到广告布局正在取代我已经拥有的(游戏)。

根据我的理解,使用下面的代码使其工作。创建一个内容视图,并将两者都添加到其中。

 @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;
        //setContentView(R.layout.main);
        RelativeLayout layout = new RelativeLayout(this);
        RelativeLayout.LayoutParams gameViewParams =
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                        RelativeLayout.LayoutParams.WRAP_CONTENT);
        //gameViewParams.bottomMargin = 150;
        requestWindowFeature( Window.FEATURE_NO_TITLE );
        View gameView = initializeForView(new ZBGame(), cfg);
        layout.addView(gameView, gameViewParams);

        AdView adView = new AdView(this);
        adView.setAdUnitId("ca-app-pub-4445204025228818/6510368088");
        //adView.setAdUnitId("app-id");
        adView.setAdSize(AdSize.BANNER);

        RelativeLayout.LayoutParams adParams = 
            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
        adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

        layout.addView(adView, adParams);

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

        setContentView(layout);    

共有1个答案

都乐逸
2023-03-14

好的,你还没有显示#初始化的代码,也没有显示R.的XML配置layout.main但我怀疑我能猜到发生了什么。

由于在第二种情况下,您的游戏使用#onCreate而不是调用#setContentView,因此#初始化必须调用#setContentView。这意味着在第一种情况下,您调用#setContentView两次。您应该只调用一次,因为这定义了您的活动的布局。

你的布局需要为你的游戏和AdView提供元素。我怀疑你还没有。这也需要修复。

你能发布你复制游戏集成的链接吗?这是我看到的使用此代码片段的第6篇SO帖子,我想将源代码扼杀在萌芽状态。

 类似资料:
  • 我正在尝试在Flatter应用程序中实现AdMob的广告。我两天前创建了Admob Id,我的帐户已被Admob批准。我测试了应用程序(横幅广告)的测试应用程序ID和它的工作,但它与我的真实应用程序ID不工作。 正在寻求帮助

  • 我正在为iOS和Android开发一个应用程序,我正在使用Phonegap构建来创建它。我想要显示闪屏,我有。为每个平台创建的PNG文件;在iOS中,一切都很好,但在Android中,不会出现闪屏。 我的config.xml如下所示(相关代码): 我按照Phonegap文档创建了我的闪屏,Android的大小如下: 屏幕-ldpi-port.png-(320x426) 屏幕-mdpi-port.p

  • 这是我的第一个应用程序,除了广告外,其他都是完整的。请澄清: 我能够让测试广告正确显示,所以测试广告工作完美 我几个小时前刚把付款信息加进我的账户 我收到了一封来自Admob的电子邮件,其中包含我的官方应用ID#和Ad Unit Id# 我在论坛上浏览过,也读过,真正的广告可能需要几个小时几天才能显示出来 我的第一个问题是,对于真正的广告,我应该在清单文件中输入什么数字?从测试文档中: 为了展示一

  • 编辑1我知道这个问题已经问过了,但是没有人回答,stacktrace也没有添加到里面,所以我又问了一遍。 如果我安装了twitter应用程序,然后尝试登录,那么应用程序将成功地用twitter登录,但如果我从移动端卸载twitter应用程序,然后尝试登录应用程序,那么我收到以下错误,无法用twitter登录 未能获取请求令牌 我没有看到任何WebView。之后点击登录与twitter按钮。 E/T

  • 我正在开发一个我希望成为多租户的Office 365应用程序:也就是说,我希望该应用程序能够访问来自其他组织的用户的交换数据。到目前为止,我已经能够代表所需的第三方用户创建OAuth 2访问令牌,但从未向用户显示同意屏幕,API请求失败,401未授权错误包含以下标头: 更详细地说,我做了以下工作。我已经创建并配置了 Azure AD 应用程序。我已将应用程序配置为多租户,并添加了 AAD 访问以及

  • 我是spring boot新手,尝试使用spring boot编写MVC应用程序。控件将到达控制器,但JSP没有显示。我试着把JSP放在webapp文件夹,webapp/web-inf文件夹,但它不起作用。下面是代码。 应用属性: 登录控制器: 项目结构