【问题标题】:Random NullPointerException with LibGDXLibGDX 的随机 NullPointerException
【发布时间】:2016-12-11 22:37:17
【问题描述】:

所以事情就是这样。在我的 firebase 面板中,我收到了有关我的 Android 应用程序中出现以下 NullPointerException 的报告:

     Exception java.lang.NullPointerException: Attempt to invoke interface method 'float com.badlogic.gdx.Graphics.getDeltaTime()' on a null object reference
blue.rtrngames.papersorcery.PaperSorcery.render (PaperSorcery.java:86)

有问题的行只是我的渲染方法的第一行,如下所示:

@Override
public void render()
{
    tick(Gdx.graphics.getDeltaTime()); // <- this is the line

所以 Gdx.graphics 在那里是空的。这种情况只发生在大约 1% 的用户身上,发生在刚启动后,即使这样似乎也完全罕见,而且并非每次都发生。我无法重现此崩溃;它根本不会发生在我身上。

我该怎么办?我无法想象仅仅实现一个空检查会在这里有所帮助,因为如果 Gdx.graphics 为空,肯定会出现问题?我想游戏只会呈现黑屏或某事。一直这样吗?

【问题讨论】:

  • 您是否尝试过实施空值检查并查看它是否有效?
  • 当你看到这样的空静态时,问题通常是初始化库和在某处使用它之间的竞争条件。我会对此进行一些检查,并尝试确保初始化首先完成,或者渲染在使用它之前检查它的初始化。
  • @Aaron 我会,但问题是我看不到用户会得到的结果。如果游戏则继续渲染黑屏或某事。像那样,我宁愿让他们崩溃并重新启动游戏,这样它就可以工作了。
  • 啊,遗憾的是我对 Android 开发的了解不够,无法提供帮助,抱歉:/
  • 你能展示你的 AndroidLauncher 类吗?您是否直接使用 Threads 做任何事情?

标签: java android nullpointerexception libgdx


【解决方案1】:

确保您的 Gdx 上下文已初始化

换句话说,在您的create() 方法开始执行之前,不要调用任何Gdx.(...) 方法

【讨论】:

    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2013-10-07
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多