Android四大组件之SharedPreferences的使用

用一个小例子来使用SharedPreferences

看下运行结果

输入账号与密码

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

下面看下实现方法

第一步:对布局进行编辑

  <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;
        }
    }
}
posted @ 2017-09-27 09:02  陌上花开222  阅读(270)  评论(0编辑  收藏  举报