我有一个描述如何使用 SharedPreferences 的类:
class TextPreferences(context: Context) {
private val PREFS_FILENAME = TextPreferences::class.java.simpleName
val TEXT = "TEXT"
private var pref: SharedPreferences? = null
fun getText(): String? {
return pref?.getString(TEXT, null)
}
fun setText(res: String) {
val editor = pref?.edit()
editor?.putString(TEXT, res)
editor?.apply()
}
init {
pref = context.getSharedPreferences(
PREFS_FILENAME,
Context.MODE_PRIVATE
)
}
}
在其中一个类中,我使用 setText() 方法设置 Preferences 的值,而在其余类(大约有十个)中,我需要使用 getText() 方法检索该值。
检索 TextPreferences 值的片段代码:
class MyFragment: BaseFragment() {
private var prefs: TextPreferences? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
prefs = TextPreferences(requireActivity().baseContext)
val someString = prefs?.getText()
}
}
问题是,我是否正确使用首选项?在每个类中创建一个 TextPreferences 类型的对象以便从中提取值是否正确?如果你需要在 1000 个类中提取一个值,那么你将不得不创建 1000 个这样的对象。也许我没有正确理解某些东西?
我执行以下操作。我创建
Extension-functions:和
SharedPreferencesinjekchuKoin在 inViewModel或 in的帮助下Fragment