【问题标题】:How to change default name of preferences.xml database?如何更改preferences.xml 数据库的默认名称?
【发布时间】:2012-10-30 12:02:04
【问题描述】:

我想使用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)。

【问题讨论】:

标签: android android-preferences


【解决方案1】:

在PreferenceActivity中设置共享偏好名称,根据this

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()) 时创建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多