0

我有 2 Fragments1st用于计算,而2nd用于设置。

我使用SharedPreference.Editor.commit()ononPause()方法保存设置。到目前为止,储蓄没有问题。我面临的问题是检索SharedPreference我的1st Fragment. 每次按下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();
    }
4

2 回答 2

0

SharedPreferences在其他地方初始化你的对象,然后做一次——也许在onCreate. 您没有看到更改的原因是因为在SharedPreferences某处打开了不同的实例,具有相同的构造函数,并且这些实例的多个实例不会自动解析/合并。当您使用它时,将 Editoredit实例与settings.

于 2012-09-25T08:39:49.797 回答
0

好的,我发现了我的问题。问题是onPause()只有当我开始另一个活动时才会触发(我开始了一个活动onClickButton count。我更改了我的代码以saveToPref()通过覆盖onPageSelected我的ViewPagerbackPressed我的MainActivity.

于 2012-09-26T03:21:24.593 回答