我的应用中有一个Spinner。无论在微调器中选择什么,最好保持跨会话,所以我使用SharedPreferences
来保持用户的选择。
我不确定哪种是在需要时存储和检索此值的最佳方法。我想我看到了三种选择。
在其SharedPreferences
侦听器中为微调器更新onItemSelected
。当我需要在我的应用中检索值以选择如何继续时,请从SharedPreferences
中获取值。
更新SharedPreferences
中的onPause()
。需要检索所选值时,请使用spinnerName.getSelectedItem()
。
两者的结合。当需要使用值SharedPreferences
时,使用侦听器更新getSelectedItem()
(是的,对此不太确定)。
这与我的微调器有关,但我想知道关于我的其他UI元素的相同事情,所以任何建议都会有所帮助。例如,一种方法更有效还是更有意义?
答案 0 :(得分:1)
如果你选择
执行spinnerName.setOnItemSelected(this)
后,它会立即调用侦听器方法,如果你有逻辑将值存储在回调内的Shared-preference中,那么它可能会导致不一致,因为如果逻辑初始化微调器是在onCreate()
方法中,那么很可能你的共享偏好值总是将它重置为Spinner中的默认选定值
如果您选择第二个选项,那么将值保存到共享首选项的逻辑是合理的,但执行spinnerName.getSelectedItem().
有点容易出错,而不是直接从共享首选项(是的!为什么不直接从共享首选项中获取它。)
没有评论:-P认真
为什么你想要使一个简单的过程复杂化,因为最终这不应该变成一个维护噩梦,因为只要有更多的变量和方法流,它就会导致代码气味和复杂的逻辑,从而导致本身很简单的任务。
保持简单。