android-StackOverflowError 1.5与1.6

我有一个创建ListActivity的布局.在显示ListActivity之前,我先执行数据库查询,然后使用SimpleCursorAdapter将数据挂接到列表.

所有这些在1.6及更高版本上都可以正常工作.在1.5上,执行查询的my函数成功执行,但几秒钟后发生StackOverflowError.有谁知道为什么在1.5中而不是1.6中会发生此错误?

更新:我确定当我从带有TabView的Activity移至带有ListView的Activity时发生崩溃.如果我从不包含选项卡视图的活动中转到ListView,则不会发生崩溃. ListView的活动正在将游标返回到查询,该查询中数据库有大约10列.在这10列中,我在屏幕上显示3列.

这是我的代码的执行流程:

TabView Activity sends Intent to start List View Activity

onCreate() //of ListActivity
{
    showList();
}

showList()
{
    //open DataBase
    //perform query
    //create SimpleCursorAdapter
    //setListAdapter
}

因此,例如,这在安装了2.1的Droid和目标为1.6的仿真器上可以完全正常运行.但是以上内容在HTC Hero 1.5和目标1.5的模拟器上均无效.

如果我让setListAdapter执行,则会发生崩溃.如果那条线出了,一切正常,但是显然我的数据没有显示.它不会在调用setListAdapter的行上崩溃,但是如果曾经执行过setListAdapter,它将最终崩溃.

堆栈跟踪:

Thread [<3> main] (Suspended (exception StackOverflowError))

ViewRoot.draw(boolean) line: 1235   
ViewRoot.performTraversals() line: 1030 
ViewRoot.handleMessage(Message) line: 1482  
ViewRoot(Handler).dispatchMessage(Message) line: 99 
Looper.loop() line: 123 
ActivityThread.main(String[]) line: 3948    
Method.invokeNative(Object,Object[],Class,Class[],int,boolean) line: not available [native method]  
Method.invoke(Object,Object...) line: 521  
ZygoteInit$MethodAndArgsCaller.run() line: 782  
ZygoteInit.main(String[]) line: 540 
NativeStart.main(String[]) line: not available [native method]  
最佳答案
也许此错误不是由数据库引起的.

实际上,当您的布局层次结构太深时,通常会发生此错误.

对于1.5,它可能是13个深度.也许尝试用Hierarchy Viewer进行检查.

此外,发布堆栈跟踪可能会有所帮助.

更新:
Stacktrace明确指出问题出在您的行布局中.当您注释掉设置适配器时,不会绘制行,因此不会发生错误.

也许您在行中嵌套了太多的LinearLayout?尝试制作简单的行-如果问题消失了,您将知道要维修什么.

还可以考虑从LinearLayout移至RelativeLayout.它展平了您的视图层次结构.尽管考虑到RelativeLayout有一些错误,例如. RelativeLayout differences between 1.5 and 2.1.

以上是来客网为你收集整理的android-StackOverflowError 1.5与1.6 全部内容,希望文章能够帮你解决android-StackOverflowError 1.5与1.6 所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。