I am making a live wallpaper using andengine. The problem is in setting screen. When i press the settings button in the preview screen, my onSharedPreferenceChanged() method is called automatically.. which i think should not happen unless i am changing some preferences. Below is my implementation. Can someone tell me what wrong am i doing?
public class LiveWallpaperSettings extends PreferenceActivity implements OnSharedPreferenceChangeListener{
ListPreference listPreferencespeed, listPreferenceConst, listPreferenceCld;
public static boolean mSettingsChanged = false;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
listPreferencespeed = (ListPreference) findPreference("listPref");
listPreferenceConst= (ListPreference) findPreference("listPrefConst");
listPreferenceCld = (ListPreference) findPreference("listPrefCld");
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.e("LiveWallpaperSettings", "Key :- " + key);
SharedPreferences customSharedPreference = getSharedPreferences(key, LiveWallpaperSettings.MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference.edit();
editor.putString("Speed",listPreferencespeed.getValue());
editor.putString("Cld", listPreferenceCld.getValue());
editor.putString("Const", listPreferenceConst.getValue());
editor.commit();
mSettingsChanged = true;
Log.e("LiveWallpaperSettings", "Speed Value after setting " + customSharedPreference.getString("Speed", ""));
Log.e("LiveWallpaperSettings", "Cloud Value after setting " + customSharedPreference.getString("Cld", ""));
Log.e("LiveWallpaperSettings", "Constellations Value after setting " + customSharedPreference.getString("Constd", ""));
Log.e("LiveWallpaperSettings", "mSettingsChanged " + mSettingsChanged);
}
@SuppressWarnings("deprecation")
@Override
protected void onResume() {
super.onResume();
// Set up a listener whenever a key changes
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@SuppressWarnings("deprecation")
@Override
protected void onPause() {
super.onPause();
// Unregister the listener whenever a key changes
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
}