2012-07-07 73 views
1

我有兩個活動:一個(SettingsActivity),從而節省了在的onStop(偏好)是這樣的:如何閱讀更新的共享首選項?

SharedPreferences.Editor editor = getSharedPreferences("myprefs", Context.MODE_PRIVATE).edit(); 

editor.putString("login", etLogin.getText().toString()); 
editor.putString("password", etPassword.getText().toString()); 

editor.commit(); 

和第二個(MainActitivy),其內容爲他們的onResume()之類

SharedPreferences prefs = activity.getSharedPreferences("myprefs", Context.MODE_PRIVATE); 
prefs.getString(...); 

當我更改設置並返回主活動時,舊值將被加載!我必須再次打開SettingsActivity並再次返回,才能進行更改。

是onStop()的保存例程在onResume()旁邊的單獨線程中運行,因此讀取時,更改還沒有提交?如何實現正確的行爲?骯髒的解決方案的想法:我正在考慮一個單身人士,它擁有我的喜好,並保存()和負載(),但這是醜陋的解決方案,我想知道,如何正確地做到這一點。

回答

0

如果您不需要調用finish(),SettingsActivity是否已停止;在保存用戶名和密碼後調用onstop()方法(activity lifecycle)。

如果您只需調用save方法並通過點擊後退按鈕返回主活動,則不會觸發onStop()方法。因爲SettingsActivity仍在運行並在後臺暫停。

+0

是的,onStop()已被調用。但是它在onResume()之後調用() – shmoula 2012-07-07 22:50:30

+0

我在onStop()中調用了記錄器,並且輸出被打印,所以我認爲調用了onStop()。 – shmoula 2012-07-07 22:57:59

+0

是否在onStop()和onResume()方法的末尾調用super.onStop()和super.onResume()?這可以解決你的問題!? – aichingm 2012-07-07 23:22:49