X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FDictionaryActivity.java;h=9bf6dbabe9e159102dbfbde3d618ace30e6358a1;hb=8eeb57a0089f84abe9dc14e4b199b92bd04b2d11;hp=dbeb485cba5e8678b741d372edd7e46c473ede83;hpb=ed60ef0e7ea62b069b173c269d8abe97a9069033;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/DictionaryActivity.java b/src/com/hughes/android/dictionary/DictionaryActivity.java index dbeb485..9bf6dba 100644 --- a/src/com/hughes/android/dictionary/DictionaryActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryActivity.java @@ -39,6 +39,7 @@ import android.support.v7.widget.Toolbar; import android.text.ClipboardManager; import android.text.InputType; import android.text.Spannable; +import android.text.SpannableString; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.StyleSpan; @@ -229,6 +230,8 @@ public class DictionaryActivity extends ActionBarActivity { private void dictionaryOpenFail(Exception e) { Log.e(LOG, "Unable to load dictionary.", e); if (dictRaf != null) { + indexAdapter = null; + setListAdapter(null); try { dictRaf.close(); } catch (IOException e1) { @@ -709,6 +712,9 @@ public class DictionaryActivity extends ActionBarActivity { textToSpeech.shutdown(); textToSpeech = null; + indexAdapter = null; + setListAdapter(null); + try { Log.d(LOG, "Closing RAF."); dictRaf.close(); @@ -1652,14 +1658,12 @@ public class DictionaryActivity extends ActionBarActivity { final Pair pair = entry.pairs.get(r); final String col1Text = index.swapPairEntries ? pair.lang2 : pair.lang1; final String col2Text = index.swapPairEntries ? pair.lang1 : pair.lang2; - - col1.setText(col1Text, TextView.BufferType.SPANNABLE); - col2.setText(col2Text, TextView.BufferType.SPANNABLE); + final Spannable col1Spannable = new SpannableString(col1Text); + final Spannable col2Spannable = new SpannableString(col2Text); // Bold the token instances in col1. final Set toBold = toHighlight != null ? this.toHighlight : Collections .singleton(row.getTokenRow(true).getToken()); - final Spannable col1Spannable = (Spannable) col1.getText(); for (final String token : toBold) { int startPos = 0; while ((startPos = col1Text.indexOf(token, startPos)) != -1) { @@ -1670,7 +1674,10 @@ public class DictionaryActivity extends ActionBarActivity { } createTokenLinkSpans(col1, col1Spannable, col1Text); - createTokenLinkSpans(col2, (Spannable) col2.getText(), col2Text); + createTokenLinkSpans(col2, col2Spannable, col2Text); + + col1.setText(col1Spannable); + col2.setText(col2Spannable); } result.setOnClickListener(new TextView.OnClickListener() { @@ -1717,8 +1724,8 @@ public class DictionaryActivity extends ActionBarActivity { : theme.tokenRowOtherBg); // Make it so we can long-click on these token rows, too: - textView.setText(text, BufferType.SPANNABLE); - createTokenLinkSpans(textView, (Spannable) textView.getText(), text); + final Spannable textSpannable = new SpannableString(text); + createTokenLinkSpans(textView, textSpannable, text); if (!htmlEntries.isEmpty()) { final ClickableSpan clickableSpan = new ClickableSpan() { @@ -1726,7 +1733,7 @@ public class DictionaryActivity extends ActionBarActivity { public void onClick(View widget) { } }; - ((Spannable) textView.getText()).setSpan(clickableSpan, 0, text.length(), + textSpannable.setSpan(clickableSpan, 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); textView.setOnClickListener(new OnClickListener() { @Override @@ -1735,6 +1742,7 @@ public class DictionaryActivity extends ActionBarActivity { } }); } + textView.setText(textSpannable); return textView; } @@ -1764,7 +1772,7 @@ public class DictionaryActivity extends ActionBarActivity { textView.setMovementMethod(LinkMovementMethod.getInstance()); final Matcher matcher = CHAR_DASH.matcher(text); while (matcher.find()) { - spannable.setSpan(new NonLinkClickableSpan(textColorFg), matcher.start(), + spannable.setSpan(new NonLinkClickableSpan(), matcher.start(), matcher.end(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); }