Anu*_*pam 9 android sharedpreferences
我正在开发中,我在存储应用username和password在SharedPreferences.所有的东西都适合我,存储以及检索值.但我发现当我重新启动设备或应用程序强制关闭时,存储的值将SharedPreferences被重置.当我再次启动我的应用程序时,我在SharedPreferences键中获得空值.在这里,我正在做什么来存储值:
SharedPreferences emailLoginSP;
emailLoginSP = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
emailLoginSP.edit().putString("prefEmailId", email_text).commit();
emailLoginSP.edit().putString("prefUserId", userIDToken).commit();
emailLoginSP.edit().putString("prefAccess_token", accessToken).commit();
Intent i = new Intent(LoginWithEmail.this,UserInfoActivity.class);
i.putExtra("acess_token", accessToken);
i.putExtra("user_id", userIDToken);
i.putExtra("emailID", email_text);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
而且,这就是我正在重温它的方式:
SharedPreferences emailLoginSP = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
loginEmail = emailLoginSP.getString("prefEmailId", null);
loginUserId = emailLoginSP.getString("prefUserId", null);
loginAccessToken = emailLoginSP.getString("prefAccess_token", null);
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切正常.我再次说明我的问题,当我强制关闭或重启我的设备时,我得到空值.我们可以将它永久存储在应用程序内存中吗?或者,我在这里做错了什么?
任何帮助将不胜感激.
我有一个登录屏幕,希望应用程序看起来好像在应用程序关闭/销毁/电话呼叫等后仍然在内部屏幕上"登录".
我有一个Preferences对象来保存以下值Login或Register.我在所有关键屏幕onResume()方法中读取偏好值.
登录后(例如):
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(activity);
SharedPreferences.Editor editor = app_preferences.edit();
editor.putString("sessionId", application.currentSessionId);
editor.putString("userId", application.currentUserId);
editor.putString("userEmail", application.currentUserEmail);
editor.putString("siteUserId", application.currentSiteUserId);
editor.commit();
Run Code Online (Sandbox Code Playgroud)
在活动的onResume()内:( 即在内部屏幕内)
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(activity);
application.currentSessionId = app_preferences.getString("sessionId", "");
application.currentUserId = app_preferences.getString("userId", "");
application.currentUserEmail = app_preferences.getString("userEmail", "");
application.currentSiteUserId = app_preferences.getString("siteUserId", "");
Run Code Online (Sandbox Code Playgroud)
注意.我有应用程序"全局"变量,即application.currentSessionId,您可以替换您的变量
尝试类似的东西可能是你没有保存或正确检索值因为SharePreferences应该工作
嗨!解决方案对我有用!
解决方案1:
Run Code Online (Sandbox Code Playgroud)SharedPreferences sharedPreferences = getSharedPreferences("namefile", Context.MODE_PRIVATE);//store or retrieved file "namefile.xml". /*or SharedPreferences sharedPreferences =getActivity().getSharedPreferences("namefile", Context.MODE_PRIVATE); (use Shared Preferences in Fragment)*/ String getValueFromKey = sharedPreferences.getString("yourKey",new String()); //Log.d("printf:",getValueFromKey ); getValueFromKey ="Hahaha"; /* Edit value or Do nothing …… */ SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear(); //[important] Clearing your editor before using it. editor.putString("yourKey", getValueFromKey); editor.commit();
解决方案2:
Run Code Online (Sandbox Code Playgroud)SharedPreferences sharedPreferences = getSharedPreferences("namefile", Context.MODE_PRIVATE);//store or retrieved file "namefile.xml". /*or SharedPreferences sharedPreferences = getActivity().getSharedPreferences("namefile", Context.MODE_PRIVATE); (use Shared Preferences in Fragment) */ Set<String> getListValueFromKey = sharedPreferences.getStringSet("yourKey",new HashSet<String>()); getListValueFromKey.add("Hahaha"); getListValueFromKey.add("Kakaka"); getListValueFromKey.add("Hohoho"); /* Add value or Do nothing …… */ SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear(); //[important] Clearing your editor before using it. editor.putStringSet("yourKey", getListValueFromKey); editor.commit();
我和你的问题完全相同,这对我有用.对于我的整个代码示例请参阅
| 归档时间: |
|
| 查看次数: |
27591 次 |
| 最近记录: |