zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
    
  • 相关阅读:
    hdu1251 字典树trie 模板题
    SPOJ 1479 +SPOJ 666 无向树最小点覆盖 ,第二题要方案数,树形dp
    POJ 2125 最小点权覆盖集(输出方案)
    dfs序+主席树 或者 树链剖分+主席树(没写) 或者 线段树套线段树 或者 线段树套splay 或者 线段树套树状数组 bzoj 4448
    dfs序+主席树 BZOJ 2588 当然树链剖分+主席树也可以?
    最小生成树的边的概念问题!!! 最小生成树的计数 bzoj 1016
    BZOJ 2083 vector的巧用+二分
    vector的哈希值 Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) C
    codeforces Good bye 2016 E 线段树维护dp区间合并
    莫对 和分块 模板
  • 原文地址:https://www.cnblogs.com/zyl222/p/7599956.html
Copyright © 2011-2022 走看看