Android 片段中的堆栈溢出异常

Android 片段中的堆栈溢出异常,android,Android,我有一个带有5个选项卡的tabhost,它们是片段活动。其中一个包含7个视图的序列。我认为每个都是一个片段,但当我看到片段7时,应用程序爆炸了 当我按下每个片段中的“继续”按钮时,我会以以下方式启动一个新片段: MyFragment newFragment = new MyFragment (); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.

我有一个带有5个选项卡的tabhost,它们是
片段活动
。其中一个包含7个视图的序列。我认为每个都是一个片段,但当我看到片段7时,应用程序爆炸了

当我按下每个片段中的“继续”按钮时,我会以以下方式启动一个新片段:

   MyFragment newFragment = new MyFragment ();
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(R.id.publish_map_direction, newFragment);
    transaction.addToBackStack(null);
    transaction.commit();
这就是错误:

11-14 13:50:33.640: I/dalvikvm(13823): threadid=1: stack overflow on call to Landroid/text/Layout;.draw:VLLLI
11-14 13:50:33.640: I/dalvikvm(13823):   method requires 288+20+60=368 bytes, fp is 0x4428a42c (300 left)
11-14 13:50:33.640: I/dalvikvm(13823):   expanding stack end (0x4428a300 to 0x4428a000)
11-14 13:50:33.640: I/dalvikvm(13823): Shrank stack (to 0x4428a300, curFrame is 0x4428cc74)
11-14 13:50:33.640: D/AndroidRuntime(13823): Shutting down VM
11-14 13:50:33.640: W/dalvikvm(13823): threadid=1: thread exiting with uncaught exception (group=0x40015578)
11-14 13:50:33.703: E/AndroidRuntime(13823): FATAL EXCEPTION: main
11-14 13:50:33.703: E/AndroidRuntime(13823): java.lang.StackOverflowError
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.widget.TextView.onDraw(TextView.java:4229)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6933)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.buildDrawingCache(View.java:6695)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1259)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1505)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.View.draw(View.java:6936)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.widget.FrameLayout.draw(FrameLayout.java:357)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1904)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewRoot.draw(ViewRoot.java:1527)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewRoot.performTraversals(ViewRoot.java:1263)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1865)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.os.Looper.loop(Looper.java:130)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at android.app.ActivityThread.main(ActivityThread.java:3687)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at java.lang.reflect.Method.invokeNative(Native Method)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at java.lang.reflect.Method.invoke(Method.java:507)
11-14 13:50:33.703: E/AndroidRuntime(13823):    at com.
我应该以不同的方式构建我的应用程序吗

是的

我建议只使用片段,而不是在选项卡主机中嵌套片段活动。我通常创建一个选项卡栏,在它下面有一个框架布局,我把一个片段放进去。然后,根据单击的内容替换片段。这肯定会有帮助,因为我认为你有太多的事情同时进行。

是的


我建议只使用片段,而不是在选项卡主机中嵌套片段活动。我通常创建一个选项卡栏,在它下面有一个框架布局,我把一个片段放进去。然后,根据单击的内容替换片段。这肯定会有帮助,因为我认为你有太多的事情同时进行。

我对你的图表投了赞成票。但是应用程序在加载时什么时候崩溃:f1、f2、f3等等?好的,发布f7的布局。我从logcat中的第一个猜测是,你正在做类似的事情:A加载B,哪个加载A,哪个加载B…问题不是片段7,因为我可以从另一个序列访问它。我将尝试实现toadzky的回答,我只对你的图表投了赞成票。但是应用程序在加载时什么时候崩溃:f1、f2、f3等等?好的,发布f7的布局。我从logcat中的第一个猜测是,你正在做类似的事情:A加载B,哪个加载A,哪个加载B…问题不是片段7,因为我可以从另一个序列访问它。我将努力实现托阿茨基的答案