首页 > 解决方案 > 如何在其他 Fragment 中使用 PreferenceFragment 设置?

问题描述

我有一个包含 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)
}

}

片段正常弹出,一切都很好,但我对 SharedPreferences 没有很好的理解(我尝试阅读教程但我无法理解)。

如何存储和使用其他片段中的设置?

标签: androidandroid-studiokotlinandroid-fragmentsandroidx

解决方案


实际上SharedPreferences是用于在其中存储小数据(首选字符串)。从技术上讲,它是保存键值类型数据的 XML 文件。你可以让你的SharedPreferencesas static 并在你想要的任何地方使用它。要获得共享首选项,请在您的 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()如果值保存成功,则返回 true,否则返回 false。它将值同步保存到 SharedPreferences。

apply()在 2.3 中添加,并且在成功或失败时不返回任何值。它会立即将值保存到 SharedPreferences,但会启动异步提交。


推荐阅读