因为一些设备存在bug,我希望使用getSharedPreference
代替getDefaultSharedPreference
。
同时,我想监听首选项的更改。所以我做了以下操作:
this.getSharedPreferences("myPrefDB", MODE_PRIVATE).registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener()
{
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key)
{
if (key.equalsIgnoreCase("myPrefKey"))
{
flag = sharedPreferences.getBoolean(key,true);
}
}
});
但是它不起作用,给我错误的偏好设置。
甚至写些类似于:
public class Setting extends PreferenceActivity implements OnSharedPreferenceChangeListener
{
//like above
}
又出现了无法运行的问题。
我应该说,在插入值时(edit()
, commit()
),我没有编写任何内容。我只是使用:
addPreferencesFromResource(R.xml.preferences);
我认为上面这行代码将值写入默认数据库名称(例如“com.example.something_preferences
”)。但是我想将值写入我的自定义名称(myPrefDB)。