【问题标题】:Crash on open of Android App with AdMob使用 AdMob 打开 Android 应用时崩溃
【发布时间】:2014-03-27 21:09:36
【问题描述】:

我用 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 行。

有什么想法吗?

【问题讨论】:

  • 请发布整个异常堆栈跟踪,包括“Caused by:”部分。这很重要。此外,您可以在此处复制/粘贴它,而不是为您的屏幕拍照。只需在每行前使用 4 个空格来制作代码块。

标签: android crash libgdx admob


【解决方案1】:

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

它崩溃可能是因为一些 libgdx 代码假设它的布局对象已加载但它不存在,因为您已将其替换为您自己的。

【讨论】:

  • 感谢您的回答,但我不太清楚您的意思。知道如何解决它吗?
  • 尝试找到一些 libgdx 方法来设置 libgdx 的东西,但不会在幕后调用 setContentView(这是非常糟糕的形式,如果没有明确说明,真的不应该这样做) .
  • 我不知道这些东西是怎么回事,你有机会吗?
  • 我不使用 libgdx 进行编码。建议你从这里开始libgdx.badlogicgames.com
【解决方案2】:

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

【讨论】:

  • 这应该作为评论发布。它更像是评论而不是答案
  • 我没有足够的声誉发表评论。只是想帮忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多