2012-03-17 49 views
2

如何开始排除类似错误的故障?我时不时得到他们,我不知道如何处理他们。我认为我在解码堆栈跟踪方面做得非常好,但是这个让我感到困惑。Android堆栈跟踪未提及我的代码

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) 

我发现了一个android bug吗?我会包含一些代码,但我不知道要包含哪些代码。它可能是任何东西。

+0

来自主要活动的代码以及与之相关的布局XML如何 – dldnh 2012-03-17 21:12:47

回答

3

我发现了一个android bug吗?

可能不是。

它可能是任何东西。

不,它不能。堆栈跟踪指出ArrayAdapter存在问题。无论您是创建有问题的ArrayAdapter,还是创建其他内容(例如,AlertDialog),本身都会创建ArrayAdapter。在代码中只能有这么多地方发生这种情况,并且可能有代码的重要部分与ArrayAdapter无关。

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

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

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

+0

您是对的。我没有正确操作我的阵列适配器(有几个错误)。你的分析很有用,而且非常有帮助。谢谢! – MrGibbage 2012-03-18 15:41:42

0

当我遇到xml文件(布局或清单)问题时,我收到了这样的异常。它在应用程序启动过程中发生。

0

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

0

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

但是,假设所有设备都已正确QA。除了硬件问题(摄像头/传感器)之外,几乎没有任何设备会因为代码错误之外的原因而崩溃。

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