Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何读取更新的共享首选项?_Android_Sharedpreferences - Fatal编程技术网

Android 如何读取更新的共享首选项?

Android 如何读取更新的共享首选项?,android,sharedpreferences,Android,Sharedpreferences,我有两个活动:一个(SettingsActivity),它将首选项保存在onStop()中,如下所示: SharedPreferences.Editor editor = getSharedPreferences("myprefs", Context.MODE_PRIVATE).edit(); editor.putString("login", etLogin.getText().toString()); editor.putString("password", etPassword.getT

我有两个活动:一个(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();
第二个(mainActivity),它在onResume()中读取它们,就像

当我更改设置并返回主活动时,会加载旧值!我必须再次打开SettingsActivity并返回,才能进行更改

onStop()和保存例程是否在onResume()旁边的单独线程中运行,以便在读取时还未提交更改?如何实现正确的行为


肮脏的解决方案想法:我正在考虑一个singleton,它保存了我的首选项,并具有save()和load(),但这是一个丑陋的解决方案,我想知道如何正确地执行此操作。

设置活动是否已停止,如果没有,则必须调用finish();保存用户名和密码后调用onstop()方法()


如果您只是调用save方法并点击back按钮返回到主活动,则不会触发onStop()方法。因为SettingsActivity仍在运行并在后台暂停。

是,已调用onStop()。但是它是在onResume()之后调用的(或者在onResume()旁边运行),我在onStop()中调用了记录器并打印了输出,所以我认为onStop()是被调用的。在onStop()和onResume()方法的末尾调用super.onStop()和super.onResume()吗?愿这能解决你的问题!?是的,我同时调用它们,我尝试在保存/加载之前和之后调用它们,仍然是一样的:-(好的,我将其移动到onPause(),并且也执行了我前面提到的单例:-)
SharedPreferences prefs = activity.getSharedPreferences("myprefs", Context.MODE_PRIVATE);
prefs.getString(...);