我有2 Fragments
。 1st
用于计算,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();
}
答案 0 :(得分:0)
在其他地方初始化您的SharedPreferences
对象,并执行一次 - 也许在onCreate
。您之前没有看到更改的原因是因为SharedPreferences
的不同实例在某处打开,具有相同的构造函数,并且这些实例的多个实例不会自动解析/合并。在您进行操作时,请将编辑器edit
实例与settings
一起初始化。
答案 1 :(得分:0)
好的,我发现了我的问题。问题是onPause()
仅在我开始另一项活动时触发(我开始onClick
的活动Button count
。我通过覆盖saveToPref()
的{{1}}和我onPageSelected
的{{1}}来更改我的代码以触发ViewPager
。