From 85f5277e6e4780960b8e028f8a8b717d121ac3be Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Fri, 5 Jul 2013 18:52:51 +0200 Subject: fix #2057 * can be reproduced in my emulator with GCH8T5 --- main/res/layout/cachedetail_description_page.xml | 4 +- main/src/cgeo/geocaching/CacheDetailActivity.java | 5 +- .../ui/IndexOutOfBoundsAvoidingTextView.java | 55 ++++++++++++++++++++++ 3 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java (limited to 'main') diff --git a/main/res/layout/cachedetail_description_page.xml b/main/res/layout/cachedetail_description_page.xml index 8325798..dba6789 100644 --- a/main/res/layout/cachedetail_description_page.xml +++ b/main/res/layout/cachedetail_description_page.xml @@ -11,7 +11,7 @@ - - { private final View loadingIndicatorView; - private final TextView descriptionView; + private final IndexOutOfBoundsAvoidingTextView descriptionView; private final String descriptionString; private Spanned description; private final View shortDescView; public LoadDescriptionTask(final String description, final View descriptionView, final View loadingIndicatorView, final View shortDescView) { this.descriptionString = description; - this.descriptionView = (TextView) descriptionView; + this.descriptionView = (IndexOutOfBoundsAvoidingTextView) descriptionView; this.loadingIndicatorView = loadingIndicatorView; this.shortDescView = shortDescView; } diff --git a/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java b/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java new file mode 100644 index 0000000..a0c8b52 --- /dev/null +++ b/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java @@ -0,0 +1,55 @@ +package cgeo.geocaching.ui; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.TextView; + +/** + * Jelly beans can crash when calculating the layout of a textview. + * + * https://code.google.com/p/android/issues/detail?id=35466 + * + */ +public class IndexOutOfBoundsAvoidingTextView extends TextView { + + public IndexOutOfBoundsAvoidingTextView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public IndexOutOfBoundsAvoidingTextView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public IndexOutOfBoundsAvoidingTextView(Context context) { + super(context); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + try{ + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } catch (IndexOutOfBoundsException e) { + setText(getText().toString()); + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + } + + @Override + public void setGravity(int gravity){ + try{ + super.setGravity(gravity); + } catch (IndexOutOfBoundsException e) { + setText(getText().toString()); + super.setGravity(gravity); + } + } + + @Override + public void setText(CharSequence text, BufferType type) { + try{ + super.setText(text, type); + } catch (IndexOutOfBoundsException e) { + setText(text.toString()); + } + } +} \ No newline at end of file -- cgit v1.1