android examples java.lang.StackOverFlow error. يشتبه الكثير من وجهات النظر؟




android:padding (6)

عندما تحصل على خطأ مثل الخطأ أدناه (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)

Answer #1

لديك (طريقة) الكثير من التخطيطات المتداخلة. يمكنك الاطلاع على مدونة Android الرسمية على d.android.com للحصول على نصائح وحيل حول كيفية تحسين التخطيطات.


Answer #2

في حالتي حلتها في

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;

Answer #3

في حالتي ، كان السبب في ذلك هو وجود تخطيطات متداخلة (قائمة معقدات) في قائمة داخل شاشة عرض جزء داخل جزء آخر ، باستخدام دعم v4 ومكتبات HoloEverywhere v1.4.

اضطررت لإزالة الأجزاء المتداخلة وبناءها بطريقة مختلفة.


Answer #4

في حالتي و XamarinForms ، قمت بحل هذا الخطأ عن طريق إضافة CachingStrategy="RecycleElement" إلى ListView وإزالة تخطيطات إضافية أيضًا.
يجب على مستخدمي Android استخدام RecyclerView أو طرق إعادة تدوير العرض الأخرى.


Answer #5

بالنسبة إلى نماذج Xamarin في حالتنا باستخدام ListViews لم تحل المشكلة ، واصل الاستثناء رفعها على مكتبة لدينا ، ولا يمكننا استدعاء طريقة السحب من مؤشر ترابط آخر لأن بعض الرسومات المرسومة بـ NControl التي نحتاجها لا تسمح لنا للقيام بذلك (OpenGL ذات الصلة أعتقد). حتى في النهاية فقط الاستيلاء على الاستئناف في العارض المخصص دائرينا والاتصال Invalidate () عليه حل المشكلة.


Answer #6

في حالتي التي كانت ListView داخل ScrollView وعندما أحاول التمرير إلى الأسفل. وتنتج خطأ .

لذا ، تجنب وجود ListView داخل ScrollView .

أو يمكننا استخدام نهج مختلف لتنفيذ ListView.

عرض قائمة Android داخل عرض التمرير