forked from upstream-mirrors/OpenTracks
Re-enable SummaryProvider for default_activity.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user