似乎Android SDK没有正确编译我的Android应用程序。构建应用程序后,我有时会看到随机的异常。如果我注释掉有问题的代码,重建,取消注释代码,然后重新重建,错误就会消失。
例如,这段代码给了我一个NullPointerException:
playButton.setOnClickListener(new OnClickListener(){ public void onClick(查看v){ startActivityForResult(settings,PLAY_GAME); } });
此代码有 nothing 错误!然而adb logcat告诉我它是异常的原因。 评论此代码,重建,取消注释和重建,会使错误消失。
发生了什么事?
这使得开发Android特别令人沮丧。
更新:正如我之前所指出的,这些看似随机的错误在我取消注释/重新编译/评论/重新编译后就会消失。所以我无法重现堆栈跟踪。如果我没记错的话,这是一个NullPointerException。
但是,如果它确实是错误的编程,为什么现在应用程序运行正常,没有任何错误?
每当我对应用程序进行重大更改(添加新资源,新类,函数等)时,旧代码工作正常。为什么呢?
更新:说真的,伙计们,讨厌仇恨。无论是无神论者还是基督教辩论,我都觉得无聊。很抱歉让自己有点失误。发布了一个包含最新错误的新问题:
答案 0 :(得分:1)
注释掉这段代码,重建,取消注释和重建,会让错误消失。
在您看来,这似乎是Android中的一个错误,但我怀疑真正的问题是您的代码中与线程/同步相关的错误。例如,playButton
可能在初始化之前被使用。
但除非您向我们展示堆栈跟踪并识别抛出异常的代码行,否则我们无法真正帮助您。
但是,如果它确实是错误的编程,为什么现在应用程序运行正常,没有任何错误?
见上文:很可能是因为您遇到了线程/同步问题。您需要知道具有GUI的应用程序的不同部分将在不同的线程中运行...即使您没有显式创建这些线程。你必须遵守规则。如果你不遵守这些规则,就会发生不好的事情......就像有时会发生的例外情况一样,有时根本不会发生,这取决于风的吹向。
答案 1 :(得分:0)
可能是您的PLAY_GAME活动在没有结果的情况下返回,例如,如果您按下后退按钮&它只是停止而不调用setResult()。
答案 2 :(得分:0)
不,如其他几个地方所述,有时候来源和垃圾箱不同步。我已经多次注意到,特别是在更改XML时。对于命令行用户,解决方案是删除bin目录,然后重新编译。问题消失了。