如何在其他片段中使用 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 但开始异步提交。