我希望将电子邮件和密码保存在 SharedPreferences 上,以便它们可以在应用程序关闭后恢复。不明白哪里出错了,应用关闭后的数据没有在EditText上设置。
MainActivity.java
public class MainActivity extends Activity {
Session session;
EditText email, password;
Button save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
email=(EditText) this.findViewById(R.id.editText1);
password=(EditText) this.findViewById(R.id.editText2);
save=(Button) this.findViewById(R.id.button1);
session = new Session();
if(session.getEmail()!=null){
email.setText(session.getEmail());
password.setText(session.getPassword());
}
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
session.saveData(getApplicationContext(),
email.getText().toString(), password.getText().toString());
}
});
}
}
Session.java
public class Session {
SharedPreferences prefs;
Editor editor;
Context context;
public static String FIRST_TIME="true";
public static String NAME_PREFS="MY_PREFS";
public static String EMAIL="";
public static String PASSWORD="";
public void saveData(Context context, String email, String password){
this.context=context;
prefs= context.getSharedPreferences(NAME_PREFS, Context.MODE_PRIVATE);
editor=prefs.edit();
editor.putString(FIRST_TIME, "false");
editor.commit();
editor.putString(EMAIL, email);
editor.putString(PASSWORD,password);
editor.commit();
}
public String getEmail(){
return prefs.getString(EMAIL, null);
}
public String getPassword(){
return prefs.getString(PASSWORD, null);
}
}
最佳答案
EMAIL
和 PASSWORD
应该是您的 key ,因此传递一些字符串作为标识符 - 用于存储您的值的 key 。改成这样:
public static String EMAIL="saved_email";
public static String PASSWORD="saved_password";
此外,当您从首选项中检索值时,需要对其进行初始化,例如。在 getEmail()
函数中传递上下文:
public String getEmail(Context context){
SharedPreferences prefs = context.getSharedPreferences(NAME_PREFS, Context.MODE_PRIVATE);
return prefs.getString(EMAIL, null);
}
关于android - 使用 SharedPreferences 的简单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24885878/