Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a7e3e74d authored by Jean Chalard's avatar Jean Chalard
Browse files

Fix a view-related crash

Bug: 12788164
Change-Id: If0d815518824a8e57b15e80111c5e6e08e93ba7e
parent 4197c6f3
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -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);
+5 −0
Original line number Diff line number Diff line
@@ -98,6 +98,10 @@ public final class WordListPreference extends Preference {
        setSummary(getSummary(status));
    }

    public boolean hasStatus(final int status) {
        return status == mStatus;
    }

    @Override
    public View onCreateView(final ViewGroup parent) {
        final View orphanedView = mInterfaceState.findFirstOrphanedView();
@@ -217,6 +221,7 @@ public final class WordListPreference extends Preference {
        progressBar.setIds(mClientId, mWordlistId);
        progressBar.setMax(mFilesize);
        final boolean showProgressBar = (MetadataDbHelper.STATUS_DOWNLOADING == mStatus);
        setSummary(getSummary(mStatus));
        status.setVisibility(showProgressBar ? View.INVISIBLE : View.VISIBLE);
        progressBar.setVisibility(showProgressBar ? View.VISIBLE : View.INVISIBLE);