如何在其他片段中使用 PreferenceFragment 设置?
How to use PreferenceFragment settings in other fragments?
我有一个包含 1 个设置的 PreferenceFragment。它使用以下代码定义(和调用):
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings, rootKey);
loadSettings()
}
private fun loadSettings() {
val sp = PreferenceManager.getDefaultSharedPreferences(this.context)
val safemode = sp.getBoolean("safemode", false)
}
}
fragment正常弹出,一切都很好,但我对SharedPreferences的理解不是很好(我尝试阅读教程,但我无法理解)。
如何在其他片段中存储和使用设置?
实际上SharedPreferences
是为了在其中存储小数据(首选字符串)。
从技术上讲,它是 XML 文件,用于保存键值类型的数据。
您可以将 SharedPreferences
设为静态并在任何您想要的地方使用它。
要获取共享首选项,请使用以下方法在您的 Application/Activity/Fragment:
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app.test", Context.MODE_PRIVATE);
阅读首选项:
String dummyKey = "dummyKey";
String l = prefs.getString(dummyKey, "default value");
编辑和保存首选项
String dt = getSomeString();
prefs.edit().putString(dummyKey, dt).apply();
commit()
return 如果值保存成功则为真,否则为假。它同步将值保存到 SharedPreferences。
apply()
是在 2.3 中添加的,return 在成功或失败时没有任何价值。它立即将值保存到 SharedPreferences 但开始异步提交。
我有一个包含 1 个设置的 PreferenceFragment。它使用以下代码定义(和调用):
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings, rootKey);
loadSettings()
}
private fun loadSettings() {
val sp = PreferenceManager.getDefaultSharedPreferences(this.context)
val safemode = sp.getBoolean("safemode", false)
}
}
fragment正常弹出,一切都很好,但我对SharedPreferences的理解不是很好(我尝试阅读教程,但我无法理解)。
如何在其他片段中存储和使用设置?
实际上SharedPreferences
是为了在其中存储小数据(首选字符串)。
从技术上讲,它是 XML 文件,用于保存键值类型的数据。
您可以将 SharedPreferences
设为静态并在任何您想要的地方使用它。
要获取共享首选项,请使用以下方法在您的 Application/Activity/Fragment:
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app.test", Context.MODE_PRIVATE);
阅读首选项:
String dummyKey = "dummyKey";
String l = prefs.getString(dummyKey, "default value");
编辑和保存首选项
String dt = getSomeString();
prefs.edit().putString(dummyKey, dt).apply();
commit()
return 如果值保存成功则为真,否则为假。它同步将值保存到 SharedPreferences。
apply()
是在 2.3 中添加的,return 在成功或失败时没有任何价值。它立即将值保存到 SharedPreferences 但开始异步提交。