Re-enable SummaryProvider for default_activity.

This commit is contained in:
Dennis Guse
2019-11-08 07:58:30 +01:00
parent bd155cd600
commit 92d3439c3b
3 changed files with 27 additions and 6 deletions
@@ -32,6 +32,7 @@ import androidx.preference.PreferenceDialogFragmentCompat;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
import de.dennisguse.opentracks.util.HackUtils;
import de.dennisguse.opentracks.util.PreferencesUtils;
import de.dennisguse.opentracks.util.TrackIconUtils;
@@ -57,8 +58,7 @@ public class ActivityTypePreference extends DialogPreference {
setNegativeButtonText(android.R.string.cancel);
setDialogIcon(null);
setPersistent(true);
//TODO: for some reason the summary is not updated; after changing it. Enable summaryprovider, when fixed.
// setSummaryProvider(summaryProvider);
setSummaryProvider(summaryProvider);
}
@Override
@@ -142,6 +142,7 @@ public class ActivityTypePreference extends DialogPreference {
String newDefaultActivity = textView.getText().toString();
if (getPreference().callChangeListener(newDefaultActivity)) {
PreferencesUtils.setDefaultActivity(getActivity(), newDefaultActivity);
HackUtils.invalidatePreference(getPreference());
}
}
}
@@ -13,6 +13,7 @@ import androidx.preference.PreferenceFragmentCompat;
import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
import de.dennisguse.opentracks.util.HackUtils;
import de.dennisguse.opentracks.util.PreferencesUtils;
import de.dennisguse.opentracks.util.StringUtils;
@@ -190,10 +191,7 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit
String[] options = getResources().getStringArray(metricUnits ? R.array.stats_rate_metric_options : R.array.stats_rate_imperial_options);
statsRatePreferences.setEntries(options);
//TODO This is a hack!!! (Alternative bring the object out of view).
//Need to trigger androidx.preference.preferences.notifyChanged() to trigger a redraw, but method is protected.
statsRatePreferences.setEnabled(false);
statsRatePreferences.setEnabled(true);
HackUtils.invalidatePreference(statsRatePreferences);
}
}
}
@@ -0,0 +1,22 @@
package de.dennisguse.opentracks.util;
import androidx.annotation.NonNull;
import androidx.preference.Preference;
public class HackUtils {
private HackUtils() {
}
/**
* Triggers a redraw of the summary of a preference if it was set programmatically.
* Need to trigger androidx.preference.preferences.notifyChanged() to trigger a redraw, but method is protected.
* This workaround also works when this preference has not changed, but it's entries (see R.string.stats_rate_key).
* TODO
*/
public static void invalidatePreference(@NonNull Preference preference) {
boolean isEnabled = preference.isEnabled();
preference.setEnabled(!isEnabled);
preference.setEnabled(isEnabled);
}
}