Android堆栈跟踪没有提到我的代码

时间:2012-03-17 21:00:19

标签: android debugging nullpointerexception

如何开始解决此类错误?我不时得到它们,我不知道如何处理它们。我以为我在解码堆栈跟踪方面做得非常好,但是这让我感到困惑。

java.lang.NullPointerException
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
at android.widget.AbsListView.obtainView(AbsListView.java:1315)
at android.widget.ListView.makeAndAddView(ListView.java:1727)
at android.widget.ListView.fillDown(ListView.java:652)
at android.widget.ListView.fillSpecific(ListView.java:1284)
at android.widget.ListView.layoutChildren(ListView.java:1558)
at android.widget.AbsListView.onLayout(AbsListView.java:1147)
at android.view.View.layout(View.java:7035)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:7035)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
at android.view.View.layout(View.java:7035)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:7035)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)

我发现了一个安卓漏洞吗?我会包含一些代码,但我不知道要包含哪些代码。它可以是任何东西。

4 个答案:

答案 0 :(得分:3)

  

我是否发现了一个安卓漏洞?

可能不是。

  

它可以是任何东西。

不,它不能。堆栈跟踪指出ArrayAdapter中存在问题。您要么创建有问题的ArrayAdapter,要么创建其他人(例如,AlertDialog),而这正在创建ArrayAdapter。代码中只有很多地方出现这种情况,并且可能代码中有很大一部分与ArrayAdapter无关。

接下来,您可以看到createViewFromResource()中发生异常。只需从方法名称和异常中,最可能出现的问题是:您在ArrayAdapter构造函数中提供了无效的布局资源ID。

请注意,“无效的布局资源ID”可能不是您的错。每当您在Android开发中遇到与资源相关的错误时,请清理项目(项目>从Eclipse主菜单清除,或从命令行清除ant clean),然后重试。如果问题消失,生活就会好起来。如果问题仍然存在,在这种情况下,请仔细查看ArrayAdapter构造函数。

如果有帮助,欢迎您检查the source code to ArrayAdaptercreateViewFromResource()。该链接指向该类的最新版本,但您可以使用“分支”选项卡查找与您正在运行的任何Android版本对应的选项。有时,如果您在硬件上运行,则行号将不匹配,因为设备制造商对该类进行了修改,但是根据方法名称,您仍然可以找到问题所在的一般区域。在这种情况下,相对较少的事情可以合理地提出NullPointerException,因此最可能的情况仍然是您(或构建工具)提供了无效的布局资源ID。

答案 1 :(得分:0)

当我遇到xml文件(布局或清单)问题时,我收到了这些例外。它在应用程序启动期间发生。

答案 2 :(得分:0)

根据您的IDE,您可以使用Eclipse / Intellij IDEA调试器来跟踪代码并准确找到您的Activity失败的位置。

答案 3 :(得分:0)

根据我的经验,这不是Android错误,而是特定设备上Android实施的问题。我有一个类似的问题,我在很长一段时间内发布了这个问题 - App crashing in Desire HD并且有一些讨论可能会有所帮助。

但是,假设所有设备都已正确进行QA。除了硬件问题(相机/传感器)之外,几乎没有任何设备会因为代码出错而导致其崩溃。

从网络上复制粘贴代码时也要非常小心!