下面列出了android.content.SharedPreferences#OnSharedPreferenceChangeListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//set title
getActivity().setTitle("Settings");
//background color
view.setBackgroundColor(getResources().getColor(R.color.white));
sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if(key.equals("RANDOMIZE_LOCATION") && cbRandomize.isChecked()) {
Toast.makeText(context, getString(R.string.settings_randomize_toast), Toast.LENGTH_LONG).show();
}
}
};
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
private void bindBoolPreferenceToHomeDashService(final int preferenceId, final BoolPreferenceAction boolPreferenceAction) {
final String preferenceKey = getString(preferenceId);
if(!onSharedPreferenceChangeListeners.containsKey(preferenceKey)) {
SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
if (s.equals(preferenceKey)) {
boolean newValue = sharedPreferences.getBoolean(s, false);
if (mBound) {
boolPreferenceAction.action(newValue);
}
}
;
}
};
onSharedPreferenceChangeListeners.put(preferenceKey, onSharedPreferenceChangeListener);
sharedPreferences.registerOnSharedPreferenceChangeListener(onSharedPreferenceChangeListener);
onSharedPreferenceChangeListener.onSharedPreferenceChanged(sharedPreferences, getString(preferenceId));
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key == "registrationID") {
String value = sharedPreferences.getString(key, "");
updateRegistrationID(value);
} else if (key == "FCMtoken") {
String value = sharedPreferences.getString(key, "");
updatePushToken(value);
}
}
};
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
sharedPreferences.registerOnSharedPreferenceChangeListener(onSharedPreferenceChangeListener);
updateRegistrationID(sharedPreferences.getString("registrationID", ""));
updatePushToken(sharedPreferences.getString("FCMtoken", ""));
mainActivity = this;
NotificationHelper.createChannelAndHandleNotifications(getApplicationContext());
}
/**
* Unregisters SecureStorageChangeListener from SecureStorage
*
* @param context Context is used internally
* @param listener Provided listener with given behaviour from the developer that will be unregistered
*/
public static void unregisterOnSharedPreferenceChangeListener(@NonNull Context context,
@NonNull SharedPreferences.OnSharedPreferenceChangeListener listener) {
Context applicationContext = context.getApplicationContext();
SharedPreferences preferences = applicationContext
.getSharedPreferences(KEY_SHARED_PREFERENCES_NAME, MODE_PRIVATE);
preferences.unregisterOnSharedPreferenceChangeListener(listener);
}
/**
* Registers SecureStorageChangeListener to listen to any changes in SecureStorage
*
* @param context Context is used internally
* @param listener Provided listener with given behaviour from the developer that will be registered
*/
public static void registerOnSharedPreferenceChangeListener(@NonNull Context context,
@NonNull SharedPreferences.OnSharedPreferenceChangeListener listener) {
Context applicationContext = context.getApplicationContext();
SharedPreferences preferences = applicationContext
.getSharedPreferences(KEY_SHARED_PREFERENCES_NAME, MODE_PRIVATE);
preferences.registerOnSharedPreferenceChangeListener(listener);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName(LauncherFiles.SHARED_PREFERENCES_KEY);
addPreferencesFromResource(R.xml.board_preferences);
mBoardTitlePreference = (EditTextPreference) findPreference(BoardUtils.BOARD_TITLE_KEY);
setBoardTitlePreference();
mListenerOptions = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
switch (key) {
case BoardUtils.BOARD_TITLE_KEY:
updateBoardTitlePreferenceSummary();
break;
case BoardUtils.CUSTOM_APP_KEY:
manageCustomAppPreference();
break;
}
}
};
mCustomAppPreference = findPreference(BoardUtils.CUSTOM_APP_PREF_KEY);
manageCustomAppPreference();
mCustomAppPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent intent = new Intent(getActivity(), MultiSelectRecyclerViewActivity.class);
getActivity().startActivity(intent);
return false;
}
});
}
public void registerPreferenceChangedListener(SharedPreferences.OnSharedPreferenceChangeListener value) {
registerPreferenceChangedListener(_prefApp, value);
}
/**
* Unregister SharedPreferences change listener
*
* @param listener listener object of OnSharedPreferenceChangeListener to be unregistered
*/
public void unregisterOnSharedPreferenceChangeListener(
SharedPreferences.OnSharedPreferenceChangeListener listener) {
preferences.unregisterOnSharedPreferenceChangeListener(listener);
}
public void registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
synchronized (this) {
mListeners.put(listener, mContent);
}
}
public void registerOnSharePreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
mSettings.registerOnSharedPreferenceChangeListener(listener);
}
public void setOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
mPreferences.registerOnSharedPreferenceChangeListener(listener);
}
public void setOnAccountKeeperChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
mPreferences.registerOnSharedPreferenceChangeListener(listener);
}
public void registerPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
settings.registerOnSharedPreferenceChangeListener(listener);
}
public void unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener
onSharedPreferenceChangeListener) {
sharedPreferences.unregisterOnSharedPreferenceChangeListener(onSharedPreferenceChangeListener);
}
public void unregisterPreferenceChangedListener(SharedPreferences.OnSharedPreferenceChangeListener value) {
unregisterPreferenceChangedListener(_prefApp, value);
}
public void unregisterOnSharePreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
mSettings.unregisterOnSharedPreferenceChangeListener(listener);
}
public void unregisterOnSharedPreferenceChangedListener(SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener) {
mPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
public void registerListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
androidSharedPreferences.registerOnSharedPreferenceChangeListener(listener);
}
public void removeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
androidSharedPreferences.unregisterOnSharedPreferenceChangeListener(listener);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
PreferenceScreen preferenceScreen = getPreferenceScreen();
Preference hiddenFolders = findPreference("hiddenFolders");
SQLiteDatabase hiddenFoldersDB = getActivity().openOrCreateDatabase("HIDDEN", MODE_PRIVATE, null);
final ArrayList<String> mHiddenFolders = new ArrayList<>();
Cursor cursor = hiddenFoldersDB.rawQuery("SELECT * FROM foldersList;", null);
if (cursor != null && cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
mHiddenFolders.add(cursor.getString(cursor.getColumnIndex("folder")));
cursor.moveToNext();
}
cursor.close();
}
if (mHiddenFolders.size() != 0) {
preferenceScreen.addPreference(hiddenFolders);
hiddenFolders.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
HiddenFoldersDialog.show(getActivity(), mHiddenFolders);
return false;
}
});
} else {
preferenceScreen.removePreference(hiddenFolders);
}
mListenerOptions = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences preftheme, String key) {
if (key.equals(getResources().getString(R.string.pref_theme)) | key.equals(getResources().getString(R.string.pref_grid))) {
restartApp(getActivity());
}
}
};
}