2012-09-25 139 views
0

我有2 Fragments1st用于计算,而2nd用于设置。Android上的奇怪共享首选项

我在onPause()方法中使用SharedPreference.Editor.commit()保存设置。节约至今没有问题。我面临的问题是检索我的1st Fragment上的SharedPreference值。每次按下count按钮时我都会检索到该值。第一次,我得到的数值是变化前的数值(这是我所面临的问题),我只会在第二次或以上检索/按下count按钮时才会获得保存的数值。

我尝试更改设置,然后按home按钮从外部终止应用程序(这会触发方法),并且当我重新打开设置时,值确实会更改为我定义的设置。所以,我确定当被触发时,设置保存了。

我想知道这里出了什么问题。任何帮助非常感谢。

按照要求,这是对我的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

@SherifelKhatib有添加 – Aprian

+0

1.'你确定commit()的返回值是否为真?'。 2.'你确定ibegin和iend总是最新吗?' –

回答

0

好的,我发现我的问题。问题是onPause()仅在我开始另一项活动时触发(我开始活动onClickButton count)。我更改了我的代码,以触发saveToPref(),方法是覆盖我的ViewPageronPageSelected和我的MainActivitybackPressed

0

初始化您SharedPreferences对象别的地方,并做一次 - 也许在onCreate。之所以没有看到更改是因为SharedPreferences的不同实例在某处打开,具有相同的构造函数,并且这些实例的多个实例不会自动解析/合并。在您处于此状态时,请将编辑器edit实例与settings一起初始化。

+0

我试图在我的MainActivity上初始化它,并使用setter和getter来获得'SharedPreference',但仍然存在问题。 – Aprian