【问题标题】:Attempt to invoke virtual method 'void android.graphics.Point.setAntiAlias(boolean)' on a null object reference尝试在空对象引用上调用虚拟方法“void android.graphics.Point.setAntiAlias(boolean)”
【发布时间】:2017-04-14 09:28:21
【问题描述】:

在 Codename1 应用程序中,我收到 CrashReport: java.lang.NullPointException: Attempt to invoke virtual method 'void android.graphics.Point.setAntiAlias(boolean)' 在空对象引用上。这似乎发生在我在应用程序的主窗体上调用“show()”之后。

请注意,代码在模拟器中运行良好,但在 Android 上执行“show()”之前始终出现此错误。

有趣的是,如果我放一个这样的对话框: Dialog.show("等一下", "显示中断点", "OK", null); 在 .show() 之前,然后点击“确定”,然后一切运行良好,没有任何异常。

但是 sleep(5000) 而不是 Dialog 并没有帮助 - 仍然会出现异常。所以至少看起来它不是一个竞争条件。

我对所有可能有问题的代码都进行了尝试捕获,但无法隔离它。它总是被 CrashReport 捕获,并且只有在 Android 设备上运行时才会捕获。

有什么想法吗?

【问题讨论】:

  • 因缺少实际代码而投票结束。请[编辑[您的问题以完整包含实际错误以及导致错误的代码。
  • 再次,我无法隔离导致错误的实际代码。但是这个症状对 Codename1 团队来说应该意味着什么吧?
  • 在代码中的某个时刻,您在 Point 对象上调用 setAntiAlias,此时,point 对象为空。找到它。
  • 并非如此,至少不是直接如此。 Codename1 是一个跨平台环境,可将 Java 转换为 Objective C(针对 IOS)和 Java(针对 Android 的差异类)。 CN1 无疑调用了 setAntiAlias,但我的代码没有。但好点。我将尝试在 CN1 代码本身中找到 setAntiAlias。
  • 请注意,上面的代码参考应该是android.graphics.Paint.setAntiAlias(boolean)。因此,不知何故,“Paint”对象在 CN1 类中设置为 null。我不确定我能做些什么来实现这一点,但我正在为这个表单使用相当多的布局管理器。想法?

标签: codenameone


【解决方案1】:

这个症状很奇怪(即使用对话框的解决方法),有一个解释会很有趣。但是,由于似乎牵涉到已弃用的 cn1(地图)代码,我将放手这一行,并用最新的 Google 原生地图代码替换此代码。如果再次出现,我会发布另一个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多