android - 使用 SharedPreferences 的简单示例

标签 android sharedpreferences

我希望将电子邮件和密码保存在 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);
    }
}

最佳答案

EMAILPASSWORD 应该是您的 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/

相关文章:

android - 在 android 上打开谷歌地图时出现 InflateException

java - Button OnClick 中 SharedPreferences 的 NullPointerException

Android 默认首选项 xml 文件格式

android - 如果列值减少,柱形图不会更新

android - 如何使用文本和图像消息创建聊天 Activity

java - 登录 google play 游戏服务时出错 : looper. 无法调用 prepare()

android - onpause android中使用SharedPreferences存储数据的效果

java - 如何使用 getPurchases() - Android

java - Spinner 不会在 Android 中保存其状态

android - 如何使用删除触发器删除同一个表中的行?