【问题标题】:Google Ads Stopped My Game From DisplayingGoogle Ads 阻止了我的游戏展示
【发布时间】:2014-11-30 07:58:39
【问题描述】:

我制作了 Flappy Bird 翻拍版,不久前刚刚完成,一切正常,但当我尝试添加 Google 的广告时,广告显示,但游戏无法执行和运行,这是只是黑屏。我也在为我的游戏使用 LibGDX。这是 MainActivity.java 代码和 Main.xml 代码。

MainActivity.java:

    package com.kensleeinc.SuperBird;

import android.os.Bundle;

import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.kilobolt.ZombieBird.R;
import com.kilobolt.ZombieBird.ZBGame;

public class MainActivity extends AndroidApplication 
{
    private AdView adView;

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

        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;

        initialize(new ZBGame(), cfg);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        AdView adView = (AdView)this.findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
    }
}

Main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/ad_unit_id"/>

</RelativeLayout>

谁能帮我解决这个问题?谢谢!

这是我的 log.txt -

11-28 19:41:07.521: E/AndroidRuntime(2889): FATAL EXCEPTION: main
11-28 19:41:07.521: E/AndroidRuntime(2889): Process: com.kilobolt.ZombieBird, PID: 2889
11-28 19:41:07.521: E/AndroidRuntime(2889): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kilobolt.ZombieBird/com.kensleeinc.SuperBird.MainActivity}: java.lang.NullPointerException
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2395)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2453)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.app.ActivityThread.access$900(ActivityThread.java:173)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.os.Handler.dispatchMessage(Handler.java:102)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.os.Looper.loop(Looper.java:136)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.app.ActivityThread.main(ActivityThread.java:5579)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at java.lang.reflect.Method.invokeNative(Native Method)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at java.lang.reflect.Method.invoke(Method.java:515)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at dalvik.system.NativeStart.main(Native Method)
11-28 19:41:07.521: E/AndroidRuntime(2889): Caused by: java.lang.NullPointerException
11-28 19:41:07.521: E/AndroidRuntime(2889):     at com.kensleeinc.SuperBird.MainActivity.onCreate(MainActivity.java:26)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.app.Activity.performCreate(Activity.java:5451)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
11-28 19:41:07.521: E/AndroidRuntime(2889):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2359)
11-28 19:41:07.521: E/AndroidRuntime(2889):     ... 11 more

【问题讨论】:

标签: java android eclipse ads adsense


【解决方案1】:

您的异常是由super.onCreate(savedInstanceState); 的两次调用引起的

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  //Here ***

        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;

        initialize(new ZBGame(), cfg);

        super.onCreate(savedInstanceState); //and Here ***
        setContentView(R.layout.main);
        AdView adView = (AdView)this.findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
    }

您的 onCreate() 方法必须类似于:

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

        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
        cfg.useGL20 = false;    
        initialize(new ZBGame(), cfg);

        AdView adView = (AdView)this.findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
    }

【讨论】:

  • 我刚试过,我的应用程序崩溃了,我刚刚将 log.txt 添加到我的帖子中
【解决方案2】:

我已修复它,因为广告试图覆盖游戏的显示,因此一个会显示而另一个不会。这是对我来说适用于 LibGDX 的 onCreate 方法。

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("my-ad-unit-here");
       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.CENTER_HORIZONTAL);

       layout.addView(adView, adParams);

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

       setContentView(layout);    
    }

【讨论】:

  • 请将您的答案标记为问题的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
相关资源
最近更新 更多