如何更改preferences.xml数据库的默认名称?

时间:2012-11-10 08:13:10

标签: android android-preferences

我想使用getSharedPreference代替getDefaultSharedPreference(因为某些设备this中存在一些错误。)

我想倾听偏好变化。所以我做了类似的事情:

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)。

1 个答案:

答案 0 :(得分:2)

根据this

在PreferenceActivity中设置共享首选项名称
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);
}

并在其他地方使用SharedPreference:

SharedPreferences prf = context.getSharedPreferences("sharedpreferenceNAMEthatYOUwant", Context.MODE_PRIVATE)

如果此名称的首选项文件不存在,则在检索编辑器(SharedPreferences.edit())然后提交更改(Editor.commit())时将创建该文件。