gpt4 book ai didi

java - Android 共享首选项未通过提交/应用/清除保存

转载 作者:行者123 更新时间:2023-12-02 02:15:05 24 4
gpt4 key购买 nike

我试图在应用程序关闭时保存 TextView 的文本内容,因此我尝试在 onDestroy 方法中保存该信息,然后设置它们在 onCreate 方法中。

我编写了以下两个函数来摆脱在共享首选项中获取和放置值的样板:

fun MainActivity.putStringInPrefs(prefsFile: String, key: String, value: Any) =
getSharedPreferences(prefsFile, Context.MODE_PRIVATE)
.edit()
.putString(key, value.toString())
.apply()

fun MainActivity.getStringFromPrefs(prefsFile: String, key: String, default: Any = "") : String =
getSharedPreferences(prefsFile, Context.MODE_PRIVATE).getString(key, default.toString())

当应用程序关闭时,这就是所谓的:

override fun onDestroy() { 
super.onDestroy()
log("OnDestroy!")
putStringInPrefs(mainPrefsFile, "lastSelectedItemDescription", textViewItemDetailsTextView.text) }

log 只是 Log.d("", "string")

的包装器

onCreate 中调用:

 override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) ; log("OnCreate!")
setContentView(R.layout.activity_main)

// Set up the item details text view
textViewItemDetailsTextView.text = getStringFromPrefs(mainPrefsFile, "lastSelectedItemDescription", detailsText)

问题是,无论我做什么,首选项都不会保存,并且默认值始终在 onCreate 中返回。我已经尝试过应用和提交,有或没有明确。没有结果。我做错了什么。

最佳答案

super.onDestroy() 应该是重写方法 onDestroy() 中的最后一行。在执行“破坏性”代码后执行的任何代码都可能会遇到意外行为

关于java - Android 共享首选项未通过提交/应用/清除保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49412024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com