2012-09-25 179 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