Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Stackoverflow Error on Listview only on selected device

While Developing Native App for Android i gone through crash on a purticular HTC DESIRE S which is happening frequently purticularly on listview pages .

What the crash is on :

  1. Listview View overflow
  2. Span overflow issue
  3. Views Overflow issue
  4. Other (Please explain )

Logcat:

java.lang.StackOverflowError
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:940)
at android.text.SpannableStringBuilder.drawText(SpannableStringBuilder.java:1042)
at android.graphics.Canvas.drawText(Canvas.java:1323)
at android.text.Styled.drawUniformRun(Styled.java:141)
at android.text.Styled.drawDirectionalRun(Styled.java:298)
at android.text.Styled.drawText(Styled.java:357)
at android.text.Layout.drawText(Layout.java:1797)
at android.text.Layout.draw(Layout.java:679)
at android.widget.TextView.onDraw(TextView.java:4338)
at android.view.View.draw(View.java:7014)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.view.View.buildDrawingCache(View.java:6739)
at android.view.View.getDrawingCache(View.java:6512)
at android.view.ViewGroup.drawChild(ViewGroup.java:1657)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.widget.AbsListView.dispatchDraw(AbsListView.java:1499)
at android.widget.ListView.dispatchDraw(ListView.java:3194)
at android.view.View.draw(View.java:7017)
at android.widget.AbsListView.draw(AbsListView.java:2607)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:7017)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2054)
at android.view.ViewRoot.draw(ViewRoot.java:1632)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1335)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1991)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4385)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)

It would be great help to track this error because i tried lot of solution but it didn't work .

like image 539
Rizvan Avatar asked Mar 06 '14 07:03

Rizvan


2 Answers

As Commonsware said it seems you have too many nested views.

Try using more RelativeLayouts as they allow making complex views with less nesting. Also try refactor the whole screen, not only the list items.

If you want more help on how to do so, post your code.

http://developer.android.com/guide/topics/ui/layout/relative.html

like image 107
clemp6r Avatar answered Oct 19 '22 20:10

clemp6r


This basically happens when you have too much views in your layout tree. Try to remove some view from your hierarchy, or go for this "dangerous" fix by overriding the draw() method of your ListView and add a try/catch:

@Override
public void draw(Canvas canvas) {
    try {
        super.draw(canvas);
    } catch (Exception e) {
        e.printStackTrace();
        //TODO reschedule a redraw?
    }
}
like image 38
bonnyz Avatar answered Oct 19 '22 19:10

bonnyz