listview中的android java.lang.StackOverflowError

Min*_*kas 0 android listview

android java.lang.StackOverflowError在listview中加载条目时收到一个奇怪的错误.奇怪的是,它总是在第三次加载我的列表视图时发生.

背后的想法是我有一个有很多标记(商店)的地图.用户可以单击菜单 - >显示商店列表,然后获取填充列表.然后,他可以按下列表中的特定商店,然后他将获得相同的地图,但商店的重点是.然后他可以再次执行相同的操作:菜单 - >显示商店列表.

实际上有某种循环,但是用户决定自己是否想要进行回合(地图 - >列表 - >地图......)或者他可以(通过按下引脚)只是出去...

前两次一切正常......第三次我要加载列表,应用程序崩溃.

日志:

02-15 13:10:00.632: E/AndroidRuntime(23826): FATAL EXCEPTION: main
02-15 13:10:00.632: E/AndroidRuntime(23826): java.lang.StackOverflowError
02-15 13:10:00.632: E/AndroidRuntime(23826):    at android.view.View.draw(View.java:6880)
02-15 13:10:00.632: E/AndroidRuntime(23826):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-15 13:10:00.632: E/AndroidRuntime(23826):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-15 13:10:00.632: E/AndroidRuntime(23826):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-15 13:10:00.632: E/AndroidRuntime(23826):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-15 13:10:00.632: E/AndroidRuntime(23826):    at android.widget.AbsListView.dispatchDraw(AbsListView.java:1480)
02-15 13:10:00.632: E/AndroidRuntime(23826):    at android.widget.ListView.dispatchDraw(ListView.java:3138)
02-15 13:10:00.632: E/AndroidRuntime(23826):    at android.view.View.draw(View.java:6986)
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多帖子,这个错误主要出现在你有无限循环时.这是某种Android解释,当你从一个活动转到另一个活动几次时,它认为你有无限循环?我没有其他想法为什么会发生这种情况.(还有一件事要添加,这两个活动在同一个标​​签下,我的意思是我使用相同的标签,但更改内容).

更改内容的代码:

Tabs s = (Tabs) getParent();
        Intent myIntent = new Intent(getApplicationContext(), Map.class);
        myIntent.putExtra("playgroundID", playgroundsArrayHolder.ID);
        View view = s.getLocalActivityManager().startActivity("map",
            myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
        setContentView(view);
Run Code Online (Sandbox Code Playgroud)

编辑:

我有点骗局了.我将2个活动合并为1个(1 xml - 隐藏组件,我目前不需要).在这种情况下,每次用户离开时我都不必重新加载我的活动.我只是显示/隐藏组件.

我知道这是一个很大的骗局,但这是我开始工作的唯一方法.我已经尝试使属性静态并保持适配器绑定到它但它不起作用.当我将适配器设置为listview时,实际上出现了问题.

任何进一步的帮助表示赞赏 亲爱的,不想在1中进行2项活动:/


好的,问题仍然存在.任何帮助表示赞赏

我在1个选项卡下用2个简单的活动(每个托管1个按钮的相对布局)测试了该程序.他们每个人都有一个彼此的链接,它在第三个循环后崩溃.

我使用以下代码从一个活动转到另一个活动:

Tabs s = (Tabs) getParent();
    Intent myIntent = new Intent(getApplicationContext(), Map.class);
    View view = s.getLocalActivityManager().startActivity("map",
        myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
    setContentView(view);
Run Code Online (Sandbox Code Playgroud)

我在活动中的布局并不重要,基本上它仍会在每个第3个循环中崩溃.

我没有其他的想法,除了android解释这个导航(从同一个选项卡下的1个活动到另一个活动)作为一个不定式循环?这基本上是用户所做的,而不是我编程的循环.

Ser*_*ner 8

好的,这就是我找到的(引自Mark Murphy(Commons Guy))

这意味着堆栈空间已耗尽.

您的UI可能在其层次结构中有太多层.运行hierarchyviewer程序并检查显示ViewGroups的图表及其包含的内容.尝试消除一些图层(例如,用单个RelativeLayout替换嵌套的LinearLayouts,摆脱标签中的活动并切换到视图中的视图).

我非常粗略的经验法则:

  • 如果您的层次结构<10层,那么您应该没有问题
  • 如果您的层次结构有10-14层,我会感到紧张
  • 如果您的层次结构有> = 15层,那么它有时会爆炸