在activity组中添加新活动时出现java.lang.StackOverflowError。

3

我遇到了stackoverflow 错误

我的布局结构如下所示

<TabActivity>
    <tab1><Activity name="home">
    <tab2><Activitygroup><activity name="XYZ">
                <activity name="options">
                <activity name="thankYou">
    <tab3>
        <TabActivity>
            <tab3.1><Activitygroup><activities name="PQR">
            <tab3.2><activity name="today">
            <tab3.3><activity name="history">
            <tab3.4><Activitygroup>
                    <activity name="reOrder"> from this I will open 
                    <Activity name="options">
        <TabActivity>
    <tab4><Activitygroup><activities name="ABC">
    <tab5><Activity name="setting">
<TabActivity>

我在tab3.4时遇到了错误。 我有一个Activitygroup中的一个活动,现在当第一个活动中的next按钮被点击时,我正在将新活动添加到此activitygroup中。

我进行了调试并检查,在onResume()之前它运行良好,但在此之后就会出错。 在出现错误之前,我也可以看到新的活动。

另外,如果我打开另一个活动,则一切正常。 那时它完美地工作。

堆栈跟踪

11-23 07:06:24.912: WARN/dalvikvm(1783): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
11-23 07:06:24.912: ERROR/AndroidRuntime(1783): Uncaught handler: thread main exiting due to uncaught exception
11-23 07:06:24.943: ERROR/AndroidRuntime(1783): java.lang.StackOverflowError
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.text.Styled.measureText(Styled.java:371)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.text.Layout.measureText(Layout.java:1601)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.text.Layout.getLineMax(Layout.java:655)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.text.Layout.getLineWidth(Layout.java:637)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.TextView.getRightFadingEdgeStrength(TextView.java:6713)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6608)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6641)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6641)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.View.draw(View.java:6538)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewRoot.draw(ViewRoot.java:1349)
11-23 07:06:24.943: ERROR/AndroidRuntime(1783):     at android.view.ViewRoo

请帮我解决这个问题。

谢谢。

1个回答

4

很抱歉,您需要使用其他解决方法,而不是将ActivityGroup嵌套在另一个ActivityGroup中,因为Android不支持太多嵌套的ViewGroup,可能会出现一些内存问题。

有时这些选项卡在模拟器上完美地工作,但在真实设备上部署时会显示明显的StackOverflowException

因此,最简单的方法是更改Activity流程(例如,将子ActivityGroup从父ActivityGroup中取出并在整个屏幕上显示)

欲了解更多信息,请参见此处,由Romain Guy回答


是的,你说得对,这是多层次视图组的问题。我移除了一些内部布局,现在它正常工作了。谢谢。 - Dharmendra
@Dharmendra:请确保您的代码也能在真实设备上运行。 - Adil Soomro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接