Android上的奇怪共享首选项

时间:2012-09-25 08:24:19

标签: android android-fragments sharedpreferences

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

我使用SharedPreference.Editor.commit()方法onPause()保存设置。到目前为止还没有问题。我面临的问题是检索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();
    }

2 个答案:

答案 0 :(得分:0)

在其他地方初始化您的SharedPreferences对象,并执行一次 - 也许在onCreate。您之前没有看到更改的原因是因为SharedPreferences的不同实例在某处打开,具有相同的构造函数,并且这些实例的多个实例不会自动解析/合并。在您进行操作时,请将编辑器edit实例与settings一起初始化。

答案 1 :(得分:0)

好的,我发现了我的问题。问题是onPause()仅在我开始另一项活动时触发(我开始onClick的活动Button count。我通过覆盖saveToPref()的{​​{1}}和我onPageSelected的{​​{1}}来更改我的代码以触发ViewPager