Use OnSharedPreferenceChangeListener, recommended and easier to use
This commit is contained in:
parent
994610c516
commit
aaad028f3a
@ -19,11 +19,11 @@
|
||||
package org.fdroid.fdroid;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.preference.Preference.OnPreferenceChangeListener;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import android.support.v4.app.NavUtils;
|
||||
@ -31,33 +31,47 @@ import android.support.v4.app.NavUtils;
|
||||
import org.fdroid.fdroid.compat.ActionBarCompat;
|
||||
|
||||
public class PreferencesActivity extends PreferenceActivity implements
|
||||
OnPreferenceChangeListener {
|
||||
OnSharedPreferenceChangeListener {
|
||||
|
||||
public static final int RESULT_RELOAD = 1;
|
||||
public static final int RESULT_REFILTER = 2;
|
||||
public static final int RESULT_RESTART = 4;
|
||||
private int result = 0;
|
||||
|
||||
public static final String KEY_UP_INT = "updateInterval";
|
||||
public static final String KEY_UP_WI_O = "updateOnWifiOnly";
|
||||
public static final String KEY_ROOTED = "rooted";
|
||||
public static final String KEY_INC_VER = "incompatibleVersions";
|
||||
public static final String KEY_THEME = "theme";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
||||
((FDroidApp) getApplication()).applyTheme(this);
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true);
|
||||
addPreferencesFromResource(R.xml.preferences);
|
||||
for (String prefkey : new String[] {
|
||||
"updateInterval", "rooted", "incompatibleVersions",
|
||||
"theme" }) {
|
||||
findPreference(prefkey).setOnPreferenceChangeListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
getPreferenceScreen().getSharedPreferences()
|
||||
.registerOnSharedPreferenceChangeListener(
|
||||
(OnSharedPreferenceChangeListener)this);
|
||||
CheckBoxPreference onlyOnWifi = (CheckBoxPreference)
|
||||
findPreference("updateOnWifiOnly");
|
||||
findPreference(KEY_UP_WI_O);
|
||||
onlyOnWifi.setEnabled(Integer.parseInt(
|
||||
((ListPreference)findPreference("updateInterval"))
|
||||
((ListPreference)findPreference(KEY_UP_INT))
|
||||
.getValue()) > 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
getPreferenceScreen().getSharedPreferences()
|
||||
.unregisterOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
@ -69,31 +83,33 @@ public class PreferencesActivity extends PreferenceActivity implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
String key = preference.getKey();
|
||||
if (key.equals("updateInterval")) {
|
||||
int interval = Integer.parseInt(newValue.toString());
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
|
||||
if (key.equals(KEY_UP_INT)) {
|
||||
int interval = Integer.parseInt(
|
||||
sharedPreferences.getString(key, "").toString());
|
||||
CheckBoxPreference onlyOnWifi = (CheckBoxPreference)
|
||||
findPreference("updateOnWifiOnly");
|
||||
findPreference(KEY_UP_WI_O);
|
||||
onlyOnWifi.setEnabled(interval > 0);
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
if (key.equals("incompatibleVersions")) {
|
||||
|
||||
if (key.equals(KEY_INC_VER)) {
|
||||
result ^= RESULT_RELOAD;
|
||||
setResult(result);
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
if (key.equals("rooted")) {
|
||||
|
||||
if (key.equals(KEY_ROOTED)) {
|
||||
result ^= RESULT_REFILTER;
|
||||
setResult(result);
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
if (key.equals("theme")) {
|
||||
if (key.equals(KEY_THEME)) {
|
||||
result |= RESULT_RESTART;
|
||||
setResult(result);
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user