我的問題是:如果我稱之爲:每個應用程序是否只有一個共享首選項對象?
PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
在兩個不同的Activities
在我的應用程序,不是指同一SharedPreferences
文件?
更具體地說,我在我的SharedPreferences
中有一個rememberMe
複選框。 ,我可以從我的應用程序中的兩個位置更改。它看起來像當我在一個位置更改它不會在第二個位置生效。
編輯: 我有這樣的代碼:
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 2013-05-08 11:25:00
@Pragnani,查看更新的問題。 – 2013-05-08 11:33:27
你的問題是你沒有'commit',sharedPreference只會在'commit'後更新。 – Pragnani 2013-05-08 11:38:15