这是我的逻辑:
我有一个用户:
user = new User(newUsername, newPassword);
生成用户的随机id +密码。
uniqueName = UUID.randomUUID().toString();
uniquePassword = UUID.randomUUID().toString();
通过对话框,用户可以更改密码,操作步骤如下:
newUsername = userField.getText().toString();
newPassword = passwordField.getText().toString();
我把它传递给模型:
user.setUsername(newUsername);
user.setPassword(newPassword);
模型如下:
public User(String username,String password){
this.username = username;
this.password = password;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
然而,当我关闭应用程序或更改活动的密码和用户不保存,任何提示如何保存用户和密码,以便如果用户离开活动,它保存密码/id?
我这样添加了SharedPreferences:
private void savePreferences(){
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREF_UNAME, newUsername);
editor.putString(PREF_PASSWORD, newPassword);
editor.commit();
}
private void loadPreferences(){
SharedPreferences settings = getSharedPreferences(PREFS_NAME,
Context.MODE_PRIVATE);
mUsername.setText(settings.getString(PREF_UNAME, newUsername));
mPassword.setText(settings.getString(PREF_PASSWORD, newPassword));
}
我调用onPause()中的savePreferences和onResume()中的loadPreferences。然而,当我关闭活动两次,并再次打开它的用户名和id我存储的都不见了。还有什么提示吗?
您没有获得价值的原因是您的数据没有存储。一旦应用程序关闭,您的静态数据将丢失。您需要将数据保存在Database或SharedPreference中。
你的模型只是一个临时保存数据的静态方法。
因为您将用户保存在内存中,并且需要将其保存在SharedPreference中。
这取决于它有多少数据(除了用户id和密码)
正如@Gosu所说,如果你有小数据使用SharedPrefereces
或如果有更多的记录和表,那么使用SQLite
如果约束只有用户名和密码(不是用户角色)&那么不需要太多工作的最好方法是SharedPreferences。否则,您需要一个数据库,如sqlite来维护这些信息
您可以使用Saved Preference来保存用户。我们可以使用gson.jar
SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
保存
Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson("User");
prefsEditor.putString("MyObject", json);
prefsEditor.commit();
的
Gson gson = new Gson();
String json = mPrefs.getString("User", "");
MyObject obj = gson.fromJson(json, User.class);