Android登录用户名记住密码——偏好设置(SharedPreferences)

SharedPreferences:偏好设置


偏好设置指的是“个性化设置”,即同一个软件,不同的使用者,设置的结果是不一样的,例如某音乐播放器中的“是否在WIFI情况下下载歌词”、某游戏中的“是否打开背景音乐”、“是否打开间效”,某新闻APP中的“默认字体大小”……

一.使用偏好设置的数据的特征是:

  • 数据量小
  • 存在可描述的K-V关系
  • 数据在应用程序中私有,不需要共享给其它应用
  • 随时可能需要保存或读取

二.使用偏好设置存储数据:

  1. 调用Context的getSharedPreferences(String name, int mode)方法获取SharedPreferences对象,其中,第1个参数表示保存偏好设置的文件的文件名,不需要指定扩展名,保存时会自动添加.xml作为扩展名,第2个参数固定取值Context.MODE_PRIVATE

  2. 调用SharedPreferences对象的edit()方法,获取SharedPreferences.Editor对象

  3. 调用SharedPreferences.Editor对象的put???(String key, ??? value)方法写入数据

  4. 调用SharedPreferences.Editor对象的commit()方法提交写入

使用偏好设置保存的数据固定会存储在 /data/data/应用程序的package/shared_prefs/ 文件夹下,如果文件夹不存在,系统会自动创建!

在系统的 设置(Settings) -> 应用程序(Apps) 找到存储了偏好设置的应用,选择 清除数据(Clear Data) 将会把所有偏好设置数据、私有文件、数据库、登录的帐号清除掉!

三.读取偏好设置中的数据:

  1. 调用Context的getSharedPreferences(String name, int mode)方法获取SharedPreferences对象,过程可参考保存数据

  2. 调用SharedPreferences对象的get???(String key, ??? defValue)方法读取数据

注意:在偏好设置中读取数据时,可以将偏好设置视为“是不可靠的”,因为首次运行时可能没有保存过数据,则读不到数据,或者用户在使用软件的过程中,随时可能清除数据,也将读不到数据!

四.登录记住用户名与密码

public class MainActivity extends Activity {
    // 声明控件
    private Button btLog;
    private EditText etUserName;
    private EditText etPassWord;
    // 声明变量
    private SharedPreferences preferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 控件初始化
        btLog=(Button)findViewById(R.id.button1);
        etUserName=(EditText)findViewById(R.id.editText1);
        etPassWord=(EditText)findViewById(R.id.editText2);

        //获取到偏好设置对象:第一个参数是表名,第二个参数是权限
        preferences=this.getSharedPreferences("login",this.MODE_PRIVATE);

        //获取到偏好设置里面存的用户名和密码数据
        String name=preferences.getString("name", "");
        String pass=preferences.getString("pass", "");

        //往两个输入框里面放我们存储的数据
        etUserName.setText(name);
        etPassWord.setText(pass);

        //设置登录按钮的点击事件:把输入的数据存入偏好设置
        btLog.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //将数据保存到偏好设置里面
                //1.获取到偏好设置的一个编辑的对象
                Editor ed=preferences.edit();
                //2.编辑器.putString;放字符串
                    //2.1.获取输入框的内容
                    String username=etUserName.getText().toString().trim();
                    String password=etPassWord.getText().toString().trim();
                    //2.2.放入我们的数据
                    ed.putString("name",username);
                    ed.putString("pass",password);
                //3.提交
                ed.commit();
                Toast.makeText(getApplicationContext(),"保存成功",Toast.LENGTH_SHORT).show();
            }
        });
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值