Android SDK无法正确编译应用程序

时间:2010-12-28 00:04:59

标签: java android debugging nullpointerexception

似乎Android SDK没有正确编译我的Android应用程序。构建应用程序后,我有时会看到随机的异常。如果我注释掉有问题的代码,重建,取消注释代码,然后重新重建,错误就会消失。

例如,这段代码给了我一个NullPointerException:

playButton.setOnClickListener(new OnClickListener(){         public void onClick(查看v){             startActivityForResult(settings,PLAY_GAME);         }         });

此代码有 nothing 错误!然而adb logcat告诉我它是异常的原因。 评论此代码,重建,取消注释和重建,会使错误消失。

发生了什么事?

这使得开发Android特别令人沮丧。

更新:正如我之前所指出的,这些看似随机的错误在我取消注释/重新编译/评论/重新编译后就会消失。所以我无法重现堆栈跟踪。如果我没记错的话,这是一个NullPointerException。

但是,如果它确实是错误的编程,为什么现在应用程序运行正常,没有任何错误?

每当我对应用程序进行重大更改(添加新资源,新类,函数等)时,旧代码工作正常。为什么呢?

更新:说真的,伙计们,讨厌仇恨。无论是无神论者还是基督教辩论,我都觉得无聊。很抱歉让自己有点失误。发布了一个包含最新错误的新问题:

App Ran Fine, Now Breaking for Seemingly Unknown Reasons

3 个答案:

答案 0 :(得分:1)

  

注释掉这段代码,重建,取消注释和重建,会让错误消失。

在您看来,这似乎是Android中的一个错误,但我怀疑真正的问题是您的代码中与线程/同步相关的错误。例如,playButton可能在初始化之前被使用。

但除非您向我们展示堆栈跟踪并识别抛出异常的代码行,否则我们无法真正帮助您。


  

但是,如果它确实是错误的编程,为什么现在应用程序运行正常,没有任何错误?

见上文:很可能是因为您遇到了线程/同步问题。您需要知道具有GUI的应用程序的不同部分将在不同的线程中运行...即使您没有显式创建这些线程。你必须遵守规则。如果你不遵守这些规则,就会发生不好的事情......就像有时会发生的例外情况一样,有时根本不会发生,这取决于风的吹向。

答案 1 :(得分:0)

可能是您的PLAY_GAME活动在没有结果的情况下返回,例如,如果您按下后退按钮&它只是停止而不调用setResult()。

答案 2 :(得分:0)

不,如其他几个地方所述,有时候来源和垃圾箱不同步。我已经多次注意到,特别是在更改XML时。对于命令行用户,解决方案是删除bin目录,然后重新编译。问题消失了。