From aa36ba9fad56b643407e7ba44ed852b0cc44e54b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sun, 13 Oct 2013 22:06:54 -0400 Subject: [PATCH] [Android] Update the config file whenever a preference within SharedPreferences has been changed. --- .../fragments/PreferenceActivity.java | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/android/phoenix/src/org/retroarch/browser/preferences/fragments/PreferenceActivity.java b/android/phoenix/src/org/retroarch/browser/preferences/fragments/PreferenceActivity.java index 2299bb3a8d..3a88c9b27c 100644 --- a/android/phoenix/src/org/retroarch/browser/preferences/fragments/PreferenceActivity.java +++ b/android/phoenix/src/org/retroarch/browser/preferences/fragments/PreferenceActivity.java @@ -1,6 +1,9 @@ package org.retroarch.browser.preferences.fragments; +import android.content.SharedPreferences; +import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; +import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; @@ -23,7 +26,7 @@ import org.retroarch.browser.preferences.util.UserPreferences; * This class can be considered the central activity for the settings, as this class * provides the backbone for the {@link ViewPager} that handles all of the fragments being used. */ -public final class PreferenceActivity extends ActionBarActivity implements TabListener, OnPreferenceAttachedListener +public final class PreferenceActivity extends ActionBarActivity implements TabListener, OnPreferenceAttachedListener, OnSharedPreferenceChangeListener { // ViewPager for the fragments. private ViewPager viewPager; @@ -38,9 +41,13 @@ public final class PreferenceActivity extends ActionBarActivity implements TabLi viewPager = (ViewPager) findViewById(R.id.viewPager); // Initialize the ViewPager adapter. - PreferencesAdapter adapter = new PreferencesAdapter(getSupportFragmentManager()); + final PreferencesAdapter adapter = new PreferencesAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); + // Register the preference change listener. + final SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(this); + sPrefs.registerOnSharedPreferenceChangeListener(this); + // Initialize the ActionBar. final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); @@ -63,24 +70,6 @@ public final class PreferenceActivity extends ActionBarActivity implements TabLi } ); } - @Override - public void onDestroy() - { - super.onDestroy(); - - // Update the config file upon closing the settings. - UserPreferences.updateConfigFile(this); - } - - @Override - public void onPause() - { - super.onPause(); - - // Update the preferences if the setting activity gets paused. - UserPreferences.updateConfigFile(this); - } - @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { @@ -100,6 +89,13 @@ public final class PreferenceActivity extends ActionBarActivity implements TabLi // Do nothing } + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) + { + // Update the config file immediately when a preference has changed. + UserPreferences.updateConfigFile(this); + } + @Override public void onPreferenceAttached(PreferenceScreen root, int xmlId) {