2012-07-07 41 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