基于SharedPreference的自动填写

android提供了一种轻量级技术用于保存应用程序的用户首选项或者应用程序的设置。
SharedPreference使我们能够将一组原始数据的键值对保存为命名的首选项。

创建并保存SharedPreference

private SharedPreferences preferences;
preferences = getSharedPreferences("User", Activity.MODE_PRIVATE);

为了修改一个SharedPreference,可以使用SharedPreference.Editor类。通过在希望修改的SharedPreference对象上调用edit()来获取对象。

SharedPreferences.Editor editor = preferences.edit();
editor.putString("UserName",et_userName.getText().toString());
editor.putString("Password",et_password.getText().toString());
editor.apply();

要保存编辑动作,只需要调用Editor对象的apply()或者commit()来分别异步或者同步保存更改。
所以更好选用apply()。
获取数据时,直接使用SharedPreference对象的类型安全的get()即可。

preferences.getString("UserName",null);

或者调用getAll()来获取所有可用的SharedPreference键值对的一个映射。

    final Map<String,?> userAll = preferences.getAll();
        if(userAll!=null && userAll.hashCode()>0){
            et_userName.setText(userAll.get("UserName").toString());
            et_password.setText(userAll.get("Password").toString());
        }

使用SharedPreference的自动填写

super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        et_userName = (EditText)findViewById(R.id.et_userName);
        et_password = (EditText)findViewById(R.id.et_password);

        btn_cancle = (Button)findViewById(R.id.btn_cancle);
        btn_login = (Button)findViewById(R.id.btn_login);

        preferences = getSharedPreferences("User", Activity.MODE_PRIVATE);
        final Map<String,?> userAll = preferences.getAll();
        if(userAll!=null && userAll.hashCode()>0){
            et_userName.setText(userAll.get("UserName").toString());
            et_password.setText(userAll.get("Password").toString());
        }

        btn_cancle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(et_userName.getText().length()>0 || et_password.getText().length()>0) {
                    et_userName.setText("");
                    et_password.setText("");
                }
                else System.exit(0);
            }
        });

        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(et_userName.getText().toString().equals("admin") && et_password.getText().toString().equals("admin")){
                        SharedPreferences.Editor editor = preferences.edit();
                        editor.putString("UserName",et_userName.getText().toString());
                        editor.putString("Password",et_password.getText().toString());
                        editor.apply();
                    Log.i("Login","登录成功,"+et_userName.getText().toString());
                    Toast.makeText(MainActivity.this,"登录成功!",Toast.LENGTH_LONG).show();
                }
                else {
                    Log.e("Login","登录失败:"+et_userName.getText().toString());
                    Toast.makeText(MainActivity.this, "登录失败!", Toast.LENGTH_SHORT).show();
                }
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值