如何在多个片段文件中使用共享首选项



我需要在多个fragment文件中使用共享首选项(不能使用活动文件)我必须存储几个字符串行。

如何初始化片段中的shared preferences?我如何写/读它?

我是否需要在主活动中初始化它,还是必须在片段活动文件中初始化它?

技巧如下:

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE); 

。不行。

尝试将

SharedPreferences 封装在某些首选项类中,如下所示:

class MyPrefs {
    private static final String FILENAME = "prefs_filename";
    private static final String KEY_SOMETHING = "something";
    private SharedPreferences mPreferences;
    public MyPrefs(Context context) {
        mPreferences = new SharedPreferences(FILENAME, Context.MODE_PRIVATE);
    }
    public void setSomething(Something value) {
       mPreferences.edit().put...(KEY_SOMETHING, value).commit();
    }
    public Something getSomething() {
       return mPreferences.getSomething(key, defaultValue);
    }
}

通过这种方式,我们为非易失性数据存储提供了干净的API。 SharedPreferences级别太低,暴露了太多细节,例如存储文件名,它迫使我们记住所有键和值类型以提取任何数据。它可能在简单的情况下工作,但是一旦您存储的数据变得复杂,它就会产生大量问题。尝试存储一些类似具有少量字段或简单复数的用户配置文件之类的东西,您就会明白。使用原始SharedPreferences会让你重构皇家痛苦。即使是简单的数据格式升级(如模式更新)也将很快变得不可能使用裸SharedPreferences

使用配置文件应存储在 SQL 数据库中,而不是共享首选项中。 因此得名。 数据库存储数据,首选项存储首选项值。 当您滥用 API 时,您不能抱怨它。

从 SQLite 文档开始

最新更新