Android四大组件之SharedPreferences的使用

用一个小例子来使用SharedPreferences

看下运行结果

1120651-20170927085611372-630800753.png

输入账号与密码

1120651-20170927085616106-717977548.png

当我返回重新打开时,用户名会自动填写~这是因为我点击了CheckBox

1120651-20170927085620747-500638341.png

下面看下实现方法

第一步:对布局进行编辑

1120651-20170927085955919-193185477.png

  <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et1"
        android:layout_toEndOf="@+id/tv1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="用户名:"
        android:id="@+id/tv1"
        android:layout_alignBaseline="@+id/et1"
        android:layout_alignBottom="@+id/et1"
        android:layout_alignParentStart="true" />

    <EditText
        android:id="@+id/et2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/et1"
        android:layout_toEndOf="@+id/tv2" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="密   码:"
        android:id="@+id/tv2"
        android:layout_alignBaseline="@+id/et2"
        android:layout_alignBottom="@+id/et2"
        android:layout_alignParentStart="true" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/cb"
        android:checked="false"
        android:text="保存用户名"
        android:layout_below="@+id/et2"
        android:layout_alignParentStart="true"
        android:layout_marginTop="34dp" />

    <Button
        android:onClick="doClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登陆"
        android:layout_alignBaseline="@+id/button"
        android:layout_alignBottom="@+id/button"
        android:layout_toStartOf="@+id/button"
        android:id="@+id/button2" />

    <Button
        android:onClick="doClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="取消"
        android:layout_marginTop="29dp"
        android:layout_marginStart="13dp"
        android:id="@+id/button"
        android:layout_below="@+id/cb"
        android:layout_toEndOf="@+id/cb" />

第二步:来到Mactivity.java进行编写

public class MainActivity extends AppCompatActivity {

    private EditText et1,et2;
    private CheckBox cb;
    private SharedPreferences Preferences;
    private SharedPreferences.Editor editor;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et1= (EditText) findViewById(R.id.et1);
        et2= (EditText) findViewById(R.id.et2);
        cb= (CheckBox) findViewById(R.id.cb);
        //获取SharedPreferences对象
        Preferences=getSharedPreferences("UserIfo",MODE_PRIVATE);
        //启动编辑
        editor=Preferences.edit();
        //第二次登陆时直接从Preferences中赋值给name
        String name=Preferences.getString("userName","");
        if (name==null){
            //若是第一次登陆则name为空,此时cb不为勾选状态
            cb.setChecked(false);
        }else {
            //若是不是第一次登陆则name不为空,此时设置cb为勾选状态
            cb.setChecked(true);
            //将name从Preferences获取出来赋值给et1
            et1.setText(name);
        }
    }
    public void doClick(View view){
        switch (view.getId()){
            case R.id.button2:
                //获取EditText控件上所输入的值
                String user=et1.getText().toString().trim();
                String press=et2.getText().toString().trim();
                //判断下EditText输入的账号与密码是否一致
                if ("admin".equals(user)&&"123456".equals(press)){
                    //判定Checked是否勾选了
                    if (cb.isChecked()){
                        //勾选了就把用户名存到editor中去
                        editor.putString("userName",user);
                        //提交下
                        editor.commit();
                    }else {
                        //若没有勾选,则把用户名给移除
                        editor.remove("userName");
                        //然后再提交下
                        editor.commit();
                    }
                    Toast.makeText(MainActivity.this, "登陆成功!", Toast.LENGTH_SHORT).show();

                }else {
                    Toast.makeText(this, "禁止登陆", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
}

转载于:https://www.cnblogs.com/zyl222/p/7599956.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值