我需要在多个fragment
文件中使用共享首选项(无法使用 Activity 文件)我必须存储多个字符串行。
如何初始化 fragment 中的共享首选项
?我如何写入/读取它?
我需要在主 Activity 中初始化它还是必须在 fragment Activity 文件中初始化它?
技巧如下:
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);
}
}
通过这种方式,我们为非 volatile 数据存储提供了干净的 API。 SharedPreferences
级别太低,暴露了太多细节,例如存储文件名,它迫使我们记住所有键和值类型以提取任何数据。它可能在简单的情况下工作,但一旦存储的数据变得复杂,就会产生大量问题。尝试存储诸如具有很少字段或简单复杂数字的用户配置文件之类的内容,您就会明白了。使用原始的 SharedPreferences
会让你的重构变得非常痛苦。即使是简单的数据格式升级(如架构更新),使用裸 SharedPreferences
也很快变得不可能。
我是一名优秀的程序员,十分优秀!