Мой вопрос: Если я позвоню:Есть ли только один объект общих предпочтений для каждого приложения?
PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
в двух различных Activities
в моем приложении, делает это относится к тому же SharedPreferences
файл?
Более конкретно, у меня есть rememberMe
флажок в моем SharedPreferences
. , который я могу изменить из двух мест в моем приложении. Похоже, когда я меняю его в одном месте, он не вступает в силу во втором месте.
Edit: У меня есть этот код:
public View createSettingsOverlay(){
ViewGroup root = (ViewGroup)findViewById(R.id.absoluteOverlay);
LayoutInflater inflater = getLayoutInflater();
View result = inflater.inflate(R.layout.overlay_baloon_settings, root, false);
((TextView)result.findViewById(R.id.loginText)).setText(application.getCurrentlyLoggedUser());
((TextView)result.findViewById(R.id.passwordText)).setText(application.getCurrenlyLoggedPass());
((TextView)result.findViewById(R.id.loginTimeText)).setText(application.getTimeOfLogin().toString());
((TextView)result.findViewById(R.id.settings_popup_server_url)).setText(application.getCurrentUrl());
//Emil Edit
CheckBox rememberMe = (CheckBox)result.findViewById(R.id.cbRememberMe);
//boolean rememberMePreference = PreferenceManager.getDefaultSharedPreferences(DynamicDataActivity.this).getBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, false);
Log.d(TAG, "Remember Me set in the preference is: " + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, false));
rememberMe.setChecked(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, false));
rememberMe.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.d(TAG, "boolean isChecked is: " + isChecked);
if (isChecked)
{
Log.d(TAG, "Remember me checkbox in setting overlay set to True");
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, true);
application.setRememberMeChecked(true);
}
else
{
Log.d(TAG, "Remember me checkbox in setting overlay set to False");
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putBoolean(SettingsActivity.REMEMBER_ME_CHECKBOX_KEY, false);
application.setRememberMeChecked(false);
}
}
});
Который в основном создается всплывающее окно с установкой от SharedPreferences
когда я проверяю rememberMe
флажок в этом всплывающем окне, закрыть его и открыть его снова. по какой-то причине он не проверяется снова, в другом Activity
(настройка Activity
), я вижу, что это изменение также не вступало в силу.
Заранее за вашу помощь.
'Похоже, когда я меняю его в одном месте, он не вступает в силу во втором месте.' Вы можете это объяснить? – Pragnani
@ Прагнани, см. Обновленный вопрос. –
Ваша проблема в том, что у вас нет 'commit', sharedPreference будет обновляться только после' commit' – Pragnani