我正在使用context.getSharedPreference而不是getDefaultSharedPreferences。 意思是:
SharedPreferences checkboxSetting = context.getSharedPreferences(
"myPreferenceDB", Context.MODE_PRIVATE);
boolean flag = checkboxSetting.getBoolean("checkboxKey",true);
和preference.xml:
<CheckBoxPreference
android:key="checkBoxPrefff"
android:title="@string/title"
android:defaultValue="true"/>
应用程序设置有一个复选框首选项,我想获取,检查或未检查的值。
这会有用吗?
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equalsIgnoreCase("checkBoxPrefff")) {
sharedPreferences.getBoolean(key,true);
}
}
sharedPreferences是使用默认数据库(..._preference.xml)还是我定义的数据库(“myPreferenceDB”)? key是“checkboxKey”还是null?
因为当我想获得像
这样的价值时SharedPreferences temp = context.getSharedPreferences(
"myPreferenceDB", Context.MODE_PRIVATE);
boolean flag = temp.getBoolean("checkboxKey",true);
这是错误的并且返回defValue(true)。但是当使用像
SharedPreferences temp = PreferenceManager.getDefaultSharedPreferences(context);
boolean flag = temp.getBoolean("checkboxKey",true);
它有效。
答案 0 :(得分:1)
您可以在您使用的任何共享首页上注册SharedPreferenceChangedListener。它不必是默认的共享首选项。
getApplicationContext().getSharedPreferences("myPreferenceDB", 0).registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// TODO Auto-generated method stub
}
});
答案 1 :(得分:1)
我再次提到sharedPref不是数据库而是XML文件。我希望您正在寻找以下代码。
public class SettingsActivity extends PreferenceActivity {
/*
* (non-Javadoc)
*
* @see android.preference.PreferenceActivity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName("myPref");
addPreferencesFromResource(R.xml.pref);
}