• android 66 sharedperference的使用


    package com.itheima.qqlogin;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.os.Bundle;
    import android.text.TextUtils;
    import android.view.View;
    import android.widget.CheckBox;
    import android.widget.EditText;
    import android.widget.Toast;
    /*
    ##Context 是什么,Activity是Context的子类,this就是Context,getApplicationContext()返回值就是Context,
    > 上下文 : 程序运行的一个依赖的环境. 必须有这个环境,才可以方便的执行代码,没有就不能方便的执行代码了。
    > 应用程序运行的全局的环境.帮助类.
    
    ##共享参数 SharedPerference
    1. 声明sp
            private SharedPreferences sp;
    2. 初始化sp
            sp = this.getSharedPreferences("config", MODE_PRIVATE);
    3. 使用sp
            Editor editor = sp.edit();
            editor.putString("qq", qq);
            editor.putString("password", password);
            //一定不要忘记 提交数据
            editor.commit();//提交数据. 类似关闭流,事务
    4. 读取sp
            sp.getString("qq", "");
    */
    public class MainActivity extends Activity {
        private EditText et_qqnumber;
        private EditText et_password;
        private CheckBox cb_remember;
        
        /**
         * 1. 声明一个共享参数(存储数据方便的api,专门往文件存数据)
         */
        private SharedPreferences sp;
        
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //2. 通过上下文得到一个共享参数的实例对象
            sp = this.getSharedPreferences("config", MODE_PRIVATE);//config是文件名,在内存储的data/data/包名/shared_prefern/config.xml,与设置相关的都在SharedPreference里面(铃声,震动),
            //类似 File f = new File("config");
            //寻找这些控件
            et_qqnumber = (EditText) findViewById(R.id.et_qqnumber);
            et_password = (EditText) findViewById(R.id.et_password);
            cb_remember = (CheckBox) findViewById(R.id.cb_remember);
            restoreInfo();
        }
    
        /**
         * 登陆按钮的点击事件
         * @param view
         */
        public void login(View view){
            String qq = et_qqnumber.getText().toString().trim();
            String password = et_password.getText().toString().trim();
            if(TextUtils.isEmpty(qq)||TextUtils.isEmpty(password)){
                Toast.makeText(this, "用户名和密码不能为空", 0).show();
                return;
            }else{
                //判断是否需要记录用户名和密码
                if(cb_remember.isChecked()){//被选中状态,需要记录用户名和密码
                    //TODO:记录密码
                    Editor editor = sp.edit();//返回值是一个编辑器,专门用来编辑文件,Editor类似于输出流。
                    editor.putString("qq", qq);
                    editor.putString("password", password);
                    editor.commit();//提交数据. 类似关闭流,事务
                }
                //登陆操作的. 模拟登陆,数据应该提交给服务器 由服务器比较是否正确
                if("10000".equals(qq)&&"123456".equals(password)){
                    Toast.makeText(this, "登陆成功", 0).show();
                }else{
                    Toast.makeText(this, "登陆失败", 0).show();
                }
            }
        }
        
        /**
         * 根据原来保存的文件信息,把qq号码和密码信息回显到界面
         */
        public  void restoreInfo(){
            //TODO:读取密码
            String qq = sp.getString("qq", "");//""是默认值,如果不存在就返回"",
            String password = sp.getString("password", "");
            et_qqnumber.setText(qq);
            et_password.setText(password);
        }
    }

    config.xml存储的密码:

    保存设置信息:

    package com.itheiam.setting;
    
    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.Editor;
    import android.os.Bundle;
    import android.widget.CheckBox;
    import android.widget.CompoundButton;
    import android.widget.CompoundButton.OnCheckedChangeListener;
    
    public class MainActivity extends Activity {
        private CheckBox cb;
        private SharedPreferences sp;//保存设置的信息,例如是否开启飞行模式status为true表示开始了false表示没有开启。
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            cb = (CheckBox) findViewById(R.id.cb);
            sp = this.getSharedPreferences("config", MODE_PRIVATE);
            //回显数据
            boolean status = sp.getBoolean("status", false);//false是默认值,默认不勾选
            cb.setChecked(status);
            //监听变化
            cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                // 当勾选状态变化的时候调用的方法
                @Override
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {
                    Editor editor = sp.edit();
                    editor.putBoolean("status", isChecked);
                    // 一定不要忘记 提交数据
                    editor.commit();// 提交数据. 类似关闭流,事务
                }
            });
        }
    
    }
  • 相关阅读:
    C++-蓝桥杯-大臣的旅费[dfs][树的直径]
    C++-蓝桥杯-剪格子-[2013真题][爆搜?]
    微信公众平台运营指导
    ALGO-84 大小写转换
    ALGO-84 矩阵乘法
    ALGO-49 寻找数组中最大值
    ALGO-92 前缀表达式
    ALO-42 送分啦
    ALGO-90 出现次数最多的整数
    【微信】公众号群发相关使用
  • 原文地址:https://www.cnblogs.com/yaowen/p/4919028.html
Copyright © 2020-2023  润新知