SharedPreferences
2015-11-20 10:15
459 查看
这里只是简单的使用了sharedPreferences,但实际要用使用记住密码这个功能要把密码加密
activity_main.xml
MainActivity.java
1.存储:SharedpreferencesUtil.putParams(this, “name”, “1111”);
2.拿值:SharedpreferencesUtil.getParams(this, “name”);
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; } } }
相关文章推荐
- JavaScript高级程序设计(第3版)中文在线阅读
- js和jQuery的区别和联系 localstorage 和sessionstorage的区别
- Angularjs快速入门(一)
- JSP页面<%@ ...%>是 什么意思
- jquery hover鼠标划过实现列表页文章内容部分显示隐藏及全部显示切换
- 爬虫搜索基础篇(二)
- jquery hover鼠标划过实现列表页文章内容部分显示隐藏及全部显示切换
- HTML5服务器发送事件(Server-Send Events)
- 跟我学习javascript创建对象(类)的8种方法
- 图片轮播图js、css
- jsp页面中,<%! %>的感叹号是干什么用的?
- 获取自定义主题(attr.xml)中的定义的图片(Drawable)
- javascript中数组方法小计
- WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展(转)
- 【Leetcode】Reverse Nodes in k-Group
- 「大概可能也许是」目前最好的 JavaScript 异步方案 async/await
- 66、fastJson 解析json数据时,如果key值不同怎么处理?
- CSS选择器大全(CSS2)
- 跟我学习javascript的最新标准ES6
- Json.Net从4.0升级到7.0带来的问题