【发布时间】:2018-08-24 18:32:40
【问题描述】:
我只是想在打开 PreferenceActivity 时更改 Preference 的值。由于首选项上没有“setValue”或类似内容,我尝试
我的代码:
long value = System.currentTimeMillis()/1000;
PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putString("test",""+value).apply();
getPreferenceScreen().findPreference("test").setSummary(""+value);
我的 XML:
<EditTextPreference
android:key="test" />
我的期望:
点击我的偏好时,它应该显示时间值(与摘要相同)并让我编辑它。
发生了什么:
只有在我关闭 Activity 后才会更改该值。下次打开屏幕,值是正确的(但实际上已经改成下一个了)
第一次尝试: 假设值是 1521143527。正确写在摘要中,但是当我单击首选项时,弹出窗口显示一个空值。
第二次尝试: Summary 已更改为 1521143540。当我点击 Preference 时,我可以编辑之前的值 (1521143527)
第三次尝试: 新摘要,但首选项值未更改,仍为:1521143540
等等……
知道有什么问题吗?
肮脏的解决方法:
setPreferenceScreen(null);
addPreferencesFromResource(R.xml.preferences);
现在将强制更新首选项,但这真的很脏,我还是不明白...
【问题讨论】:
-
您每次打开活动时都将值覆盖为 currentTimeMillis/1000?
-
是的,只是一个例子,编辑一个首选项,应用,然后点击首选项,旧值显示在弹出窗口中,直到重新启动活动
-
请分享完整的代码,以便更好地了解发生了什么
标签: android sharedpreferences preferenceactivity