aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2014-02-14 15:14:58 +0900
committerJean Chalard <jchalard@google.com>2014-02-14 18:03:34 +0900
commita7e3e74ddd714b7e22d5e5feb7e136dcb5dc1eda (patch)
treefb12e057a08ac0565079b04546732528da409b20 /java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
parent4197c6f3ab1db7d37bfb5fca05bd7169504f451e (diff)
downloadlatinime-a7e3e74ddd714b7e22d5e5feb7e136dcb5dc1eda.tar.gz
latinime-a7e3e74ddd714b7e22d5e5feb7e136dcb5dc1eda.tar.xz
latinime-a7e3e74ddd714b7e22d5e5feb7e136dcb5dc1eda.zip
Fix a view-related crash
Bug: 12788164 Change-Id: If0d815518824a8e57b15e80111c5e6e08e93ba7e
Diffstat (limited to 'java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java')
-rw-r--r--java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
index 7bbd041e7..d18639741 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java
@@ -317,15 +317,19 @@ public final class DictionarySettingsFragment extends PreferenceFragment
final WordListPreference pref;
if (null != oldPreference
&& oldPreference.mVersion == version
+ && oldPreference.hasStatus(status)
&& oldPreference.mLocale.equals(locale)) {
- // If the old preference has all the new attributes, reuse it. We test
- // for version and locale because although attributes other than status
- // need to be the same, others have been tested through the key of the
- // map. Also, status may differ so we don't want to use #equals() here.
+ // If the old preference has all the new attributes, reuse it. Ideally, we
+ // should reuse the old pref even if its status is different and call
+ // setStatus here, but setStatus calls Preference#setSummary() which needs
+ // to be done on the UI thread and we're not on the UI thread here. We
+ // could do all this work on the UI thread, but in this case it's probably
+ // lighter to stay on a background thread and throw this old preference out.
pref = oldPreference;
- pref.setStatus(status);
} else {
// Otherwise, discard it and create a new one instead.
+ // TODO: when the status is different from the old one, we need to
+ // animate the old one out before animating the new one in.
pref = new WordListPreference(activity, mDictionaryListInterfaceState,
mClientId, wordlistId, version, locale, description, status,
filesize);