【发布时间】:2021-05-24 21:58:29
【问题描述】:
我的应用程序包括玩简单的游戏并赚取一些积分,然后将这些积分提取到外部帐户。我将这些点保存在 SharedPreferences 中以避免对服务器的多个请求(当用户想要撤回时我仍然验证它们,但这与我的问题无关)。
现在,代码是这样的:
用户活动
private fun userClickedToWithdraw() {
startActivityForResult(Intent(this, WithdrawActivity::class.java), RequestCode.RC_WITHDRAW)
}
private fun transactionSuccessfully() {
//set the user points to zero in the SharedPreferences
//and updates the UI accordingly
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RequestCode.RC_WITHDRAW && resultCode == RESULT_OK) transactionSuccessfully()
}
WithdrawActivity
//handles the transaction and then call finishTransaction
private fun finishTransaction() {
setResult(RESULT_OK)
onBackPressed()
}
用户转移他的积分,然后调用finishTransaction函数将结果设置为OK并完成活动。父 Activity 处理 onActivityResult,如果结果正常,它会更新 SharedPreferences 和 UI。
这在我测试的所有设备上都能完美运行,但由于某种原因,我的一些用户得到了不同的结果。当他们成功传输时,SharedPreferences 和 UI 没有正确更新。
我无法复制此行为,因此我可以修复它。所以我希望有类似问题的人能把我带到这里。我在想也许 resultCode 不是 RESULT_OK 并且 transactionSuccessfully 因此没有被调用,但正如我所说,我不是能够复制这个。
有没有人遇到过类似的问题可以帮助我?
【问题讨论】:
标签: android kotlin sharedpreferences onactivityresult