关闭

SharedPreferences

243人阅读 评论(0) 收藏 举报
分类:

这里只是简单的使用了sharedPreferences,但实际要用使用记住密码这个功能要把密码加密

activity_main.xml

<LinearLayout
     xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >


<EditText 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="username"
    android:id="@+id/username"/>

<EditText 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="password"
    android:id="@+id/password"/>

<Button 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Login"
    android:id="@+id/login"/>

<LinearLayout android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >

    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="记住密码"/>


    <CheckBox 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/remeber"/>

</LinearLayout>


</LinearLayout>




MainActivity.java

    //全局变量
    CheckBox remeber;
    SharedPreferences sharedPreferences;
    SharedPreferences.Editor editor;
    EditText username ;
    EditText password ;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
        editor = sharedPreferences.edit();
        username = (EditText) MainActivity.this.findViewById(R.id.username);
        password = (EditText) MainActivity.this.findViewById(R.id.password);
        remeber = (CheckBox) this.findViewById(R.id.remeber);

        if(sharedPreferences.getBoolean("isRemeber", false)){
            remeber.setChecked(true);
            username.setText(sharedPreferences.getString("username","error"));
            password.setText(sharedPreferences.getString("password","error"));
        }

        Button btn_login = (Button) this.findViewById(R.id.login);
        btn_login.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {

                String userNmae = username.getText().toString();
                String passWord = password.getText().toString();

                if (userNmae.equals("123") && passWord.equals("123")) {

                    if (remeber.isChecked()) {
                        editor.putBoolean("isRemeber", true);
                        editor.putString("username", userNmae);
                        editor.putString("password", passWord);
                    } else {
                        editor.clear();
                    }
                    editor.commit();
                    Toast.makeText(MainActivity.this,"登入成功",Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this,"登入失败",Toast.LENGTH_SHORT).show();
                }
            }

        });

    }

这里写图片描述


2016/05/30 更新

SharedPreferences工具类

1.存储:SharedpreferencesUtil.putParams(this, “name”, “1111”);
2.拿值:SharedpreferencesUtil.getParams(this, “name”);

package com.example.learing;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

/**
 * 
 * @author yj
 * Sharedpreferences 工具类
 * 单例模式
 * Sharedpreferences 不适用多线程场景
 */
public class SharedpreferencesUtil {
    public static SharedPreferences sharedPreferences;
    public static Editor editor;
    private static String fileName = "user";

    private SharedpreferencesUtil() {}

    /**
     * 存储
     * @param context
     * @param key
     * @param value
     * @return
     */
    public static boolean putParams(Context context, String key, String value) {
        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(fileName, context.MODE_PRIVATE);
            editor = sharedPreferences.edit();
        }
        editor.putString(key, value);
        return editor.commit();
    }

    /**
     * 拿数据
     * @param context
     * @param key
     * @return
     */
    public static String getParams(Context context, String key) {
        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(fileName, context.MODE_PRIVATE);
        }
        return sharedPreferences.getString(key, "没有数据!");
    }

}

2016/06/01更新

    // 使用application的context,在application类设置一次就行了
    SharedpreferencesUtil.setContext(getApplicationContext());

    SharedpreferencesUtil.putParams("123", "123");
    SharedpreferencesUtil.getParams("123");
package com.example.learing;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;

/**
 * 
 * @author yj
 * Sharedpreferences 工具类
 * 单例模式
 * Sharedpreferences 不适用多线程场景
 * 原则:使用起来简单,尽量少的代码和一个类不依赖别的类
 * 注意推荐 :在application里设置context
 */
public class SharedpreferencesUtil {
    public static SharedPreferences sharedPreferences;
    public static Editor editor;
    private static String fileName = "user";
    private static Context mContext;

    private SharedpreferencesUtil() {}

    /**
     * 设置context 一般使用application的context
     * 不设置context将无法使用
     * @param context
     */
    public static void setContext(Context context) {
        mContext = context;
    }

    /**
     * 存储
     * @param context
     * @param key
     * @param value
     * @return
     */
    public static boolean putParams(String key, String value) {
        if(!checkContext()) {
            return false;
        }

        if (sharedPreferences == null) {
            sharedPreferences = mContext.getSharedPreferences(fileName, mContext.MODE_PRIVATE);
            editor = sharedPreferences.edit();
        }
        editor.putString(key, value);
        return editor.commit();
    }

    /**
     * 拿数据
     * @param context
     * @param key
     * @return
     */
    public static String getParams(String key) {
        if(!checkContext()) {
            return "没有context!不能获取值";
        }

        if (sharedPreferences == null) {
            sharedPreferences = mContext.getSharedPreferences(fileName, mContext.MODE_PRIVATE);
        }
        return sharedPreferences.getString(key, "没有数据!");
    }

    /**
     * 检查context是否为null
     * 如果没有context == null,手动抛出一个异常中断程序。
     * @return
     */
    private static boolean checkContext() {
        if (mContext == null) {
            Log.v("TAG", "在SharedpreferencesUtil没有设置context");
            throw new RuntimeException("在SharedpreferencesUtil没有设置context");
        } else { 
            return true;
        }
    }

}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android SharedPreferences用法及程序共享机制

另外,在Android中各个应用程序组件之间是相互独立的,彼此的数据不能共享。为了实现数据的共享,Android提供了Content Provider组件来实现应用程序之间数据的共享。但是Shared...
  • cbk861110
  • cbk861110
  • 2015-02-04 10:07
  • 3650

SharedPreferences和序列化结合保存对象数据

前言:        最近在做用户注册的时候,遇到了需要填写很多表单数据,不可能在一页把所有的数据都展示完全,因此采用了分页的方式,由于在用户填写数据数据之后我们需要对用户填写的数据进行暂时的记...
  • hard_working1
  • hard_working1
  • 2016-03-29 08:50
  • 816

Android中SharedPreferences和序列化结合保存对象数据

http://blog.csdn.net/ykttt1/article/details/8782875 前言:        最近在做用户注册的时候,遇到了需要填写很多表单数据,不可能在一页把...
  • zhhtao89
  • zhhtao89
  • 2015-06-15 21:23
  • 4444

Android数据存储之SharedPreferences及如何安全存储

前言:     最近一直在学习Android的数据存储,当学习到SharedPreferences的时候让我回想起了ios的NSUserDefaults,其实这两个真是异曲同工的,实现方式都是通过x...
  • andy_jiangbin
  • andy_jiangbin
  • 2017-02-13 10:35
  • 840

如何正确的使用SharedPreferences?

这是我最近碰到过的一个问题,之前并没有一个清晰的认识!唯一的印象是,SharedPreferences 是可以用来存取数据。直到前些日子,在360漏洞扫描应用后,才意识到这个问题,如何正确的使用Sha...
  • watermusicyes
  • watermusicyes
  • 2015-06-18 10:31
  • 13363

android SharedPreferences的一般用法(存取清删)

之前做应用时碰到这样一个问题:在“A” Activity 要与 “B” Activity的Fragment进行通信传值,但是忽然发现无法拿到B中Fragment的Handler,又不能发送广播,短暂的...
  • ShanYu1198124123
  • ShanYu1198124123
  • 2016-09-12 20:37
  • 21981

Android中SharedPreferences和序列化结合保存对象数据

前言:        最近在做用户注册的时候,遇到了需要填写很多表单数据,不可能在一页把所有的数据都展示完全,因此采用了分页的方式,由于在用户填写数据数据之后我们需要对用户填写的数据进行暂时的记录的...
  • zhangli_
  • zhangli_
  • 2016-06-16 09:59
  • 1647

Android SharedPreferences删除操作时的注意姿势

最近在处理一个公司的老项目的时候偶然发现一个BUG,项目请求网络数据之后通过SharedPreferences保存在本地,作为数据缓存,清除的时候直接将生成的xml件删除。流程没错,但是这样做是有问题...
  • chengxu_hou
  • chengxu_hou
  • 2017-05-12 17:13
  • 1700

Android中实现本地缓存,存储(SharedPreferences存储)

SharedPreferences轻量级缓存技术        SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置。暂时将Activity的状...
  • qq_39218478
  • qq_39218478
  • 2017-08-01 20:54
  • 260

利用Java反射机制改变SharedPreferences存储路径

SharedPreferences原则上只能保存在当前应用程序私有的Shared_prefs目录中,但利用Java的反射机制可以改变系统内定的文件存储路径。 例如:将config.xml文件保存在S...
  • Singleton1900
  • Singleton1900
  • 2013-03-10 22:41
  • 5596
    个人资料
    • 访问:47543次
    • 积分:933
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:83篇
    • 译文:0篇
    • 评论:0条