【发布时间】:2021-11-05 05:49:10
【问题描述】:
在我的应用程序中,我有一个设置片段,用户可以设置数据,例如他们想要的小数位数。目前,使用共享首选项,应用程序在重新打开应用程序时成功记住上次输入的数据。但是,更改仅在用户重新打开应用时应用,而不是在首次应用时应用。
以下代码位于MainActivity.kt中:
val sp = PreferenceManager.getDefaultSharedPreferences(this.applicationContext)
val decimalPlaces = sp.getString("decimalPlaces", "")
sharedViewModel.form = DecimalFormat("#,###.##")
when(decimalPlaces!!.toInt()){
0 -> sharedViewModel.form = DecimalFormat("#,###")
1 -> sharedViewModel.form = DecimalFormat("#,###.#")
2 -> sharedViewModel.form = DecimalFormat("#,###.##")
3 -> sharedViewModel.form = DecimalFormat("#,###.###")
4 -> sharedViewModel.form = DecimalFormat("#,###.####")
}
在研究解决方案以在应用程序中应用更改时,我遇到了以下问题:
Commit() and apply() 与其他类似方法一起,但是我无法成功实现这些方法。
有人对如何在不退出应用程序的情况下应用更改有什么建议吗?
【问题讨论】:
-
你在哪里设置字符串?
-
字符串是使用位于 settingsFragment 中的列表首选项设置的,取决于单击列表中的哪个项目,返回位于数组中的相应值
-
一旦他们从 fragment 设置值,你刷新 Mainactivity 获取字符串了吗?
-
我目前的代码位于名为 loadsettings() 的函数中,我在 MainActivity.kt 中调用此函数,我不确定如何刷新 MainActivity
-
在fragment中创建接口,在activity中实现。当片段中的某些事情发生变化时,调用将触发主要活动的接口。那里刷新sharedpreference
标签: android kotlin sharedpreferences