我已经开发了一个应用程序,其中我有4个选项卡A,B,C,D。每个选项卡都包含一个活动。在第四个选项卡D中,我添加了一个ActivityGroup,在其中我还有3个活动X,Y,Z.In第四个选项卡,我在其中添加了活动组I StackOverflow error.Please帮助我解决此错误。
这是我的stackTrace:--
07-15 15:22:45.587: ERROR/AndroidRuntime(222): Uncaught handler: thread main exiting due to uncaught exception
07-15 15:22:45.677: ERROR/AndroidRuntime(222): java.lang.StackOverflowError
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.AbsListView.dispatchDraw(AbsListView.java:1324)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.ListView.dispatchDraw(ListView.java:2972)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6641)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.AbsListView.draw(AbsListView.java:2171)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6538)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6538)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6538)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6538)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6538)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6538)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6538)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.view.View.draw(View.java:6538)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at android.widget.FrameLayout.draw(FrameLayout.java:352)
07-15 15:22:45.677: ERROR/AndroidRuntime(222): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow请帮帮我,...I我对安卓非常陌生。
发布于 2011-07-15 18:52:30
我想你在某个地方有一个无限循环。
您可能已经在层次结构中的某个位置添加了两次视图的相同实例,现在您已经有了一个循环。
解决这个问题。然后修改你的布局。我看不出有这么复杂的布局的理由。
发布于 2016-09-13 20:36:13
我已经搜索了所有的谷歌,但没有找到一个解决方案。然后我刚刚想到了这个想法,它完美地工作在我的旧三星Galaxy Nexus和沃达丰VF695!
这是我在非常深的布局的根FrameLayout中的技巧:
public class StackFrameLayout extends FrameLayout {
private boolean stackOverflow;
@Override
public void draw(final Canvas canvas) {
if (stackOverflow) {
stackDraw(canvas);
} else {
try {
super.draw(canvas);
} catch (StackOverflowError e) {
stackOverflow = true;
stackDraw(canvas);
}
}
}
public void stackDraw(final Canvas canvas) {
Thread thread = new Thread(getContext().getMainLooper().getThread().getThreadGroup(), new Runnable() {
@Override
public void run() {
StackFrameLayout.super.draw(canvas);
}
}, "draw-thread", 2000000);
thread.start();
try {
thread.join();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}因此,基本上我将复杂的绘制方法传递到一个堆栈较大的线程中。因此,调用的方法堆栈将停止增加该点。然后,UI线程等待绘制线程完成其工作,然后继续确保它像在UI线程上运行一样按顺序绘制。
https://stackoverflow.com/questions/6705425
复制相似问题