From 77a6a631748b09737580af5134ae9bfc1730e5f9 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Thu, 7 Nov 2019 19:41:29 +0100 Subject: [PATCH] Re-initialize PreferenceFragment, when sharedpreferences were reset. --- .../opentracks/settings/ResetDialogPreference.java | 14 ++++++++++++-- .../opentracks/settings/SettingsActivity.java | 12 +++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/settings/ResetDialogPreference.java b/src/main/java/de/dennisguse/opentracks/settings/ResetDialogPreference.java index 6b7ff0caf..eca722534 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/ResetDialogPreference.java +++ b/src/main/java/de/dennisguse/opentracks/settings/ResetDialogPreference.java @@ -5,6 +5,7 @@ import android.os.Bundle; import android.util.AttributeSet; import android.widget.Toast; +import androidx.fragment.app.FragmentActivity; import androidx.preference.DialogPreference; import androidx.preference.PreferenceDialogFragmentCompat; @@ -17,6 +18,10 @@ public class ResetDialogPreference extends DialogPreference { super(context, attrs); } + interface ResetCallback { + void onReset(); + } + public static class ResetPreferenceDialog extends PreferenceDialogFragmentCompat { static PreferenceDialogFragmentCompat newInstance(String preferenceKey) { @@ -31,9 +36,14 @@ public class ResetDialogPreference extends DialogPreference { @Override public void onDialogClosed(boolean positiveResult) { if (positiveResult) { - PreferencesUtils.resetPreferences(getActivity(), true); + FragmentActivity activity = getActivity(); - Toast.makeText(getActivity(), R.string.settings_reset_done, Toast.LENGTH_SHORT).show(); + PreferencesUtils.resetPreferences(activity, true); + Toast.makeText(activity, R.string.settings_reset_done, Toast.LENGTH_SHORT).show(); + + if (activity instanceof ResetCallback) { + ((ResetCallback) activity).onReset(); + } } } } diff --git a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java index b24ede107..7f1f22c9d 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java +++ b/src/main/java/de/dennisguse/opentracks/settings/SettingsActivity.java @@ -16,9 +16,9 @@ import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment; import de.dennisguse.opentracks.util.PreferencesUtils; import de.dennisguse.opentracks.util.StringUtils; -public class SettingsActivity extends AppCompatActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller { +public class SettingsActivity extends AppCompatActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller, ResetDialogPreference.ResetCallback { - private PrefsFragment prefsFragment = new PrefsFragment(); + private PrefsFragment prefsFragment; @Override protected void onCreate(Bundle savedInstanceState) { @@ -30,7 +30,7 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit toolbar.setTitle(R.string.menu_settings); setSupportActionBar(toolbar); - getSupportFragmentManager().beginTransaction().replace(R.id.settings_fragment, prefsFragment).commit(); + onReset(); } @Override @@ -38,6 +38,12 @@ public class SettingsActivity extends AppCompatActivity implements ChooseActivit prefsFragment.setDefaultActivity(iconValue); } + @Override + public void onReset() { + prefsFragment = new PrefsFragment(); + getSupportFragmentManager().beginTransaction().replace(R.id.settings_fragment, prefsFragment).commit(); + } + public static class PrefsFragment extends PreferenceFragmentCompat { /*