我正在编写一个使用登录界面保存密码的应用程序。用户可以更改登录密码。第一次,我使用以下代码保存密码,以便在重新启动应用程序时密码不会重置:
@Override
public void onSaveInstanceState(Bundle savedInstanceState){
savedInstanceState.putString("pwd", currentPwd);
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
currentPwd = savedInstanceState.getString("pwd");
}
但是在我问过之后,这个网站上有人建议我使用“SharedPreferences”。所以,我改变了代码如下:
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
SharedPreferences settings = getSharedPreferences("setting", 0);
currentPwd = settings.getString("pwd", "abc");
}
@Override public void onStop(){
super.onStop();
SharedPreferences settings = getSharedPreferences("setting", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("pwd", currentPwd);
editor.commit();
}
在我的实验之后,我发现密码将在一小时后重置,这与第一个代码相同。我为第二个代码改错了吗?或者有任何建议的方法来解决它?谢谢。
答案 0 :(得分:2)
我不确定我是否关注您的代码,但以下是我将如何执行此操作:
获取密码:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.getString("pwd", "abc");
设置密码:
SharedPreferences.Editor editor = sp.edit();
editor.putString("pwd", currentPwd);
editor.commit();
希望有所帮助
答案 1 :(得分:0)
您可以使用波纹管功能保存值。它只包含上下文,键和值:
public void savePreferencesForReasonCode(Context context,
String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
要了解详情,请参阅this Answer