【发布时间】:2012-09-25 08:24:19
【问题描述】:
我有 2 个Fragments。 1st 用于计算,2nd 用于设置。
我在onPause() 方法上使用SharedPreference.Editor.commit() 保存设置。到目前为止,储蓄没有问题。我面临的问题是在我的1st Fragment 上检索SharedPreference 值。每次按下count 按钮时,我都会检索该值。第一次,我得到的值是更改前的值(这是我面临的问题),我只会在第二次或更多次检索/按下count 按钮时获得我保存的值。
我尝试更改设置,然后按home 按钮从外部终止应用程序(触发onPause 方法),当我重新打开设置时,值确实更改为我定义的设置。所以,我确信当onPause 被触发时设置确实被保存了。
我想知道这里出了什么问题。非常感谢任何帮助。
根据要求,这是我在SettingFragment 上的保存代码:
@Override
public void onPause() {
super.onPause();
saveToPref();
}
public void saveToPref() {
SharedPreferences settings = getActivity().getSharedPreferences("mysettings", 0);
Editor edit = settings.edit();
edit.putString("begin", String.valueOf(ibegin)).putString("end", String.valueOf(iend)).commit();
}
【问题讨论】:
-
@SherifelKhatib 添加了它
-
1.
Are you sure the return value of commit() is true?。 2.Are you sure that ibegin and iend are always up-to-date? -
我假设您是第一次保存旧值。
-
是的,因为我在
1st fragment上第二次按下count按钮时检索到的值是我保存的值。问题是我第一次检索,值是保存前的值。 -
第一次尝试将值更改为 V1,然后第二次更改为 V2。当您检查这些值时,您会得到 V1 还是 V2?
标签: android android-fragments sharedpreferences