使用AdMob打开Android App时崩溃

时间:2014-03-27 21:09:37

标签: android crash libgdx admob

我开发了一个带有libGDX的Android应用程序并添加了Admob,但是当我在Android上打开APK时它会崩溃,说明该进程已经停止。

这是Android项目中的代码。

public class MainActivity extends AndroidApplication{

protected AdView adview;

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

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


    final TelephonyManager tm =(TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
    String deviceid = tm.getDeviceId();


    RelativeLayout layout = new RelativeLayout(this);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
    setContentView(graphics.getView(), createLayoutParams());
    View gameview = initializeForView(new BalloonBreakout(), false);


    adview = new AdView(this);
    adview.setAdSize(AdSize.BANNER);
    adview.setAdUnitId("ca-app-pub-6258330641042393/6188790266");

    adview.loadAd(new AdRequest.Builder().addTestDevice(deviceid).build());

    RelativeLayout.LayoutParams adparams = new RelativeLayout.LayoutParams(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() / 14);
    adparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    adparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

    layout.addView(gameview);
    layout.addView(adview, adparams);
    setContentView(layout);
    }
}

我不确定为什么会崩溃,我们将非常感谢任何帮助。

更新:

我在这里收到了错误日志,但我不知道为什么我会得到一个空指针。

E( 3875) Caused by: java.lang.NullPointerException  (AndroidRuntime)
E( 3875)    at com.sevenbit.Balloon_Breakout.MainActivity.onCreate(MainActivity.java:37)(AndroidRuntime)

第37行是:

setContentView(graphics.getView(), createLayoutParams());

但是当我删除这一行时,我仍然在同一个地方得到一个空指针,第37行。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您的问题(就像我最近看到的所有其他libgdx帖子一样)是libgdx AndroidApplication #initializeForView调用Activity #setContextView来设置自己的布局(它不应该这样)。然后使用您自己的布局调用setContextView。

它崩溃大概是因为一些libgdx代码假设它的布局对象已经加载但是它不存在,因为你已经用你自己的替换它。

答案 1 :(得分:0)

您应该发布或查看堆栈跟踪。这将告诉您代码失败的行。否则,人们将不得不通过查看您的代码来猜测。问题可能出在任何地方。