我有一个应用程序,可以节省少数列表供待办事项列表
在Android Studio中,数据保存和加载在“中型电话API 35”型仿真器上,这些模拟器只是手机的原型。
但在我的真实手机或API 21像素模拟器上运行它,数据不能保存或加载都比中型API 35低,我认为我的手机是API 34。该应用不会崩溃,列表不会填充,并且假设无法保存。 the代码:
save数据:
private fun saveData()
{
val sharedPref = getSharedPreferences(prefName,MODE_PRIVATE)
val gson = Gson()
val prefEditor = sharedPref.edit()
//prefEditor.clear()
prefEditor.putString(taskNameString, gson.toJson(gameifyInstance.GetTaskList()))
prefEditor.putString(taskDescString, gson.toJson(gameifyInstance.GetTaskDescList()))
prefEditor.putString(taskCostString, gson.toJson(gameifyInstance.GetTaskCostList()))
prefEditor.putString(rewardNameString, gson.toJson(gameifyInstance.GetRewardList()))
prefEditor.putString(rewardDescString, gson.toJson(gameifyInstance.GetRewardDescList()))
prefEditor.putString(rewardCostString, gson.toJson(gameifyInstance.GetRewardCostList()))
prefEditor.putString(pointTotalString, gameifyInstance.GetTotalPoints().toString())
prefEditor.commit()
}
加载数据:
val sharedPref = getSharedPreferences(prefName,Context.MODE_PRIVATE)
val gson = Gson()
val rawTaskNameList = sharedPref.getString(taskNameString, "[]")
val rawTaskDescList = sharedPref.getString(taskDescString, "[]")
val rawTaskCostList = sharedPref.getString(taskCostString, "[]")
val rawRewardNameList = sharedPref.getString(rewardNameString, "[]")
val rawRewardDescList = sharedPref.getString(rewardDescString, "[]")
val rawRewardCostList = sharedPref.getString(rewardCostString, "[]")
val rawPointTotal = sharedPref.getString(pointTotalString, "0")
val type = object : TypeToken<List<String>>(){}
val loadedTaskNameList : List<String> = gson.fromJson(rawTaskNameList, type)
val loadedTaskDescList : List<String> = gson.fromJson(rawTaskDescList, type)
val loadedTaskCostList : List<String> = gson.fromJson(rawTaskCostList, type)
val loadedRewardNameList : List<String> = gson.fromJson(rawRewardNameList, type)
val loadedRewardDescList : List<String> = gson.fromJson(rawRewardDescList, type)
val loadedRewardCostList : List<String> = gson.fromJson(rawRewardCostList, type)
我试图摆弄权限,当剃须共享首选项时,我尝试切换apply()和commit()。问题是我不知道在哪里调试等,以区分这是共享的偏好问题或权限问题或任何其他问题。
Edit:正如我被要求发布我的Getters一样,它们在这里: singleton的Getters他们只是返回我的单身人士中的字符串列表,该列表在整个应用程序上保存任务等
我已经为那些可能遇到的人弄清楚了 culprit实际上是ondestroy(),在中型手机上SharedPreferences可以很好地保存,它在另一个手机上无法正确触发。在Savedata()转移到其他地方,现在我希望更有效地优化一些东西之后,除了中型手机35之外,还可以节省其他模拟器的共享偏好 感谢您的协助