使用SharedPreferences保存用户数据

时间:2012-05-22 06:01:39

标签: android sharedpreferences

我正在编写一个使用登录界面保存密码的应用程序。用户可以更改登录密码。第一次,我使用以下代码保存密码,以便在重新启动应用程序时密码不会重置:

@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();
} 

在我的实验之后,我发现密码将在一小时后重置,这与第一个代码相同。我为第二个代码改错了吗?或者有任何建议的方法来解决它?谢谢。

2 个答案:

答案 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