zoukankan      html  css  js  c++  java
  • SharedPreferences实现记住密码功能

    SharedPerferences 简单介绍

    • 用于保存简单的键值对数据;
    • 它将数据放在 /data/data/<package name>/shared_prefs目录下,用xml文件保存MAP键值对

    SharedPerferences 使用步骤

    将数据存储到SharedPerferences中:

      1.先要得到SharedPerference对象:(三种方法)

          1).使用Context类中的 getSharedPreferences() 方法,它接收两个参数,第一个参数为文件名称,第二个参数为操作模式。

           操作模式MODE_PRAVITE :只有当前程序才能对这个文件进行读写。MODE_MULTI_PROCESS :多个进程中对同一个文件进行读写。

           如:

    SharedPreferences spf = getSharedPreferences("data",Context.MODE_PRIVATE);

          2).使用Activity类中的 getPreferences() 方法,它只接收一个参数--操作模式,并且会将当前活动的类名作为文件名

           如:

    SharedPreferences spf = getPreferences(MODE_PRIVATE);

          3).使用PreferenceManager类中的 getDefaultSharedPreferences() 方法,它接收一个Context参数,并且用包名作为前缀来命名文件

           如:

    SharedPreferences spf = PreferenceManager.getDefaultSharedPreferences(this);

      2.再得到SharedPreferences.Editor对象:

          使用SharedPreferences对象的 edit() 方法。

    SharedPreference.Editor editor = spf.edit();

      3.开始添加数据:

          以键值对的方式写入数据。

    editor.putInt("age",22);
    editor.putString("name","Visen");
    editor.putBoolean("singleDog",false)

      4.提交操作:

    editor.commit();

    从SharedPerferences中读取数据:

      提供了一系列的get方法进行数据的读取。如:

    String name = editor.getString("name"," ");

      如果键所对应的值不存在,则填入设定的默认值。

    简单的保存密码功能

    login.xml 登录布局页面

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/black"
        android:stretchColumns="1">
    
    
        <LinearLayout
            android:layout_height="wrap_content"
            android:background="@color/black"
            android:orientation="vertical">
    
            <ImageView
                android:layout_width="match_parent"
                android:layout_height="240dp"
                android:src="@drawable/image1"/>
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/title"
                android:textSize="40sp"
                android:textColor="@color/red"
                android:gravity="center"
                android:background="@color/cyan"/>
        </LinearLayout>
    
       <TableRow
           android:layout_marginTop="30dp">
           <TextView
               android:layout_height="wrap_content"
               android:text="@string/account"
               android:textSize="30sp"
               android:textColor="@color/white"/>
           <EditText
               android:id="@+id/account"
               android:layout_height="wrap_content"
               android:inputType="text"
               android:textSize="20sp"
               android:textColor="@color/red"
               android:gravity="center"
               android:singleLine="true"/>
       </TableRow>
    
        <TableRow>
            <TextView
                android:layout_height="wrap_content"
                android:text="@string/password"
                android:textSize="30sp"
                android:textColor="@color/white"/>
            <EditText
                android:id="@+id/passWord"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:textSize="20sp"
                android:textColor="@color/red"
                android:gravity="center" />
        </TableRow>
    
        <TableLayout
            android:layout_height="wrap_content"
            android:stretchColumns="0">
    
            <TableRow>
                <CheckBox
                    android:id="@+id/saveSelect"
                    android:background="@color/red"
                    android:layout_gravity="end"/>
                <TextView
                    android:layout_height="wrap_content"
                    android:text="@string/saveSelect"
                    android:textSize="20sp"
                    android:textColor="@color/white"
                    android:gravity="center"
                    android:layout_gravity="bottom"/>
            </TableRow>
    
            <TableRow>
                <Button
                    android:layout_height="wrap_content"
                    android:id="@+id/login"
                    android:gravity="center"
                    android:layout_span="2"
                    android:text="@string/login"
                    android:textSize="25sp"
                    android:textColor="@color/red"
                    android:background="@drawable/black_bt"/>
            </TableRow>
        </TableLayout>
    </TableLayout>

    Login.java

    public class Login extends AppCompatActivity {
    
        private SharedPreferences spf;
        private SharedPreferences.Editor spfe;
    
        private int num = 0;
        private EditText account = null;
        private EditText passWord = null;
        private CheckBox saveSelect = null;
        private Button login = null ;
    
        @Override
        protected void onCreate(Bundle saveInstanceState){
    
            //加载布局
            super.onCreate(saveInstanceState);
            setContentView(R.layout.login);
    
            //初始化控件
            account = (EditText)findViewById(R.id.account);
            passWord = (EditText)findViewById(R.id.passWord);
            saveSelect = (CheckBox)findViewById(R.id.saveSelect);
            login = (Button)findViewById(R.id.login);
    
            //使用Context的getSharedPreferences(String name,int mode)方法得到SharedPreferences对象;
            spf = getSharedPreferences("data", Context.MODE_PRIVATE);
            //使用SharedPreferences对象的edit()方法得到 SharedPreferences.Editor 的对象;
            spfe = spf.edit();
    
            //复选框是否被选中,若为选中状态,则保存过账户,要恢复数据
            if(spf.getBoolean("isSelect",false)){//选中标志,默认值为false
                String acc = spf.getString("account","");
                String pas = spf.getString("passWord","");
                account.setText(acc);
                passWord.setText(pas);
                saveSelect.setChecked(true);
            }
    
            //设置登录按钮监听事件
            login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //确认帐号密码
                    if(account.getText().toString().equals("visen") && passWord.getText().toString().equals("dsy402645063!")){
    
                        //复选框是否被勾选,若被勾选,则需要保存账户后登录;否则直接登录且不保存账户
                        if(saveSelect.isChecked()){
                            saveDate();
                        }else {
                            spfe.clear();
                            spfe.commit();
                        }
                        
                        //页面跳转
                        Intent intent = new Intent(Login.this,MainActivity.class);
                        startActivity(intent);
                        finish();
                    }else {//账户或密码错误
                        Toast.makeText(Login.this, "account or password is invalid", Toast.LENGTH_SHORT).show();
                    }
                }
            });
    
        }
    
        public void saveDate(){
    
            //读取EditText中的内容
            String acc = account.getText().toString();
            String pas = passWord.getText().toString();
            //保存数据
            spfe.putString("account",acc);
            spfe.putString("passWord",pas);
            spfe.putBoolean("isSelect",true);
            //提交
            spfe.commit();
        }
        
        @Override
        public void onBackPressed(){
            num++;
            if(num == 2){
                super.onBackPressed();
            }else{
                Toast.makeText(Login.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
            }
        }
    }

  • 相关阅读:
    77. Combinations (Recursion)
    90. Subsets II (Back-Track, DP)
    78. Subsets (Back-Track, DP)
    131. Palindrome Partitioning (Back-Track, DP)
    41. First Missing Positive (HashTable)
    49. Group Anagrams (string, HashTable)
    76. Minimum Window Substring (String, Map)
    Leetcode Intersection of Two Linked Lists
    Cocos2d-js 开发记录:基本图形绘制
    Cocos2d-js 开发记录:骨骼动画载入
  • 原文地址:https://www.cnblogs.com/visenyang/p/5498752.html
Copyright © 2011-2022 走看看