23

以下のようなエラー(Android 1.5)が発生した場合、ネストされたビューグループが多すぎるためですか、それともビューの総数が多すぎるためですか?アプリの外観を同じに保ちながら、それを回避するためのトリックはありますか?

java.lang.StackOverflowError
   at android.text.Styled.measureText(Styled.java:371)
   at android.text.Layout.measureText(Layout.java:1600)
   at android.text.Layout.getLineMax(Layout.java:654)
   at android.text.Layout.draw(Layout.java:310)
   at android.text.BoringLayout.draw(BoringLayout.java:356)
   at android.widget.TextView.onDraw(TextView.java:3921)
   at android.view.View.draw(View.java:5838)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.widget.AbsListView.dispatchDraw(AbsListView.java:1319)
   at android.widget.ListView.dispatchDraw(ListView.java:2820)
   at android.view.View.draw(View.java:5944)
   at android.widget.AbsListView.draw(AbsListView.java:2121)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.View.draw(View.java:5841)
   at android.widget.FrameLayout.draw(FrameLayout.java:352)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.View.draw(View.java:5841)
   at android.widget.FrameLayout.draw(FrameLayout.java:352)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.View.draw(View.java:5841)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.View.draw(View.java:5841)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.View.draw(View.java:5841)
   at android.widget.FrameLayout.draw(FrameLayout.java:352)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
   at android.view.View.draw(View.java:5841)
   at android.widget.FrameLayout.draw(FrameLayout.java:352)
   at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1847)
   at android.view.ViewRoot.draw(ViewRoot.java:1217)
   at android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
   at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:123)
   at android.app.ActivityThread.main(ActivityThread.java:3948)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:521)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
   at dalvik.system.NativeStart.main(Native Method)
4

7 に答える 7

32

ネストされたレイアウトが(方法で)多すぎます。d.android.comの公式Androidブログをチェックして、レイアウトを最適化するためのヒントとコツを入手できます。

于 2010-05-04T16:38:40.810 に答える
6

私の場合、私はで解決しました

onCreateView

        rootView = inflater.inflate(R.layout.fragment_interest_list, container);
        return rootView;

attachToRootパラメーターを追加する

         rootView = inflater.inflate(R.layout.fragment_interest_list,container,false);
         return rootView;
于 2015-09-07T06:49:27.260 に答える
5

私の場合、v4サポートとHoloEverywhere v1.4ライブラリを使用して、別のフラグメント内のフラグメントビューページャー内のリストにネストされたレイアウト(複雑なリストitens)が原因でした。

ネストされたフラグメントを削除して、別の方法でビルドする必要がありました。

于 2012-12-05T15:01:48.370 に答える
2

私の場合、

カスタマイズされたリストビューには相対レイアウトがあり、その後リリースされStackoverflowerrorました。

相対的なレイアウトがある場合listviewは、それを消去します:D

于 2011-07-11T13:41:31.887 に答える
0

私の場合、それはListViewaの中にScrollViewあり、それを一番下までスクロールしようとすると。スタックオーバーフローエラーが発生します。

ListViewしたがって、内部にあることは避けてくださいScrollView

または、別のアプローチを使用してListViewを実装することもできます。

スクロールビュー内のAndroidリストビュー

于 2014-01-01T17:14:34.583 に答える
0

私の場合とXamarinFormsでは、自分に追加CachingStrategy="RecycleElement"し、ListView余分なレイアウトを削除することで、このエラーを解決しました。
Androidユーザーは、RecyclerViewまたは他のビューのリサイクル方法を使用する必要があります。

于 2016-08-09T15:01:18.440 に答える
0

この場合、ListViewsを使用したXamarinフォームでは問題が解決せず、例外がカルーセルで発生し続けました。また、必要なNControlでペイントされた一部のグラフィックでは許可されていないため、別のスレッドからdrawメソッドを呼び出すことはできません。それを行うには(OpenGL関連だと思います)。したがって、最終的には、カルーセルカスタムレンダラーで例外をキャッチし、Invalidate()を呼び出すだけで問題が解決しました。

于 2016-11-03T09:35:38.077 に答える