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