Android开发之SharedPreferences的封装

news/2024/7/7 19:45:49

对于大部分初学者来说,如果想利用SharedPreferences进行数据存储的话大部分人(包括本人)应该会这样:

存储:

    SharedPreferences sharedPreferences = getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);  Editor editor = sharedPreferences.edit();  editor.putString("username", "Tom");  editor.putInt("password", 123456);  editor.commit();  

获取:

    SharedPreferences sharedPreferences = getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);  String username = sharedPreferences.getString("username", "");  int password = sharedPreferences.getInt("password", 0);  

虽然这样做代码没多少,如果是对于初学者练习来说无伤大雅。但是如果你是做一个项目开发来说,里面使用了大量的数据存数。每次都将上面的代码一遍一遍的重复,估计能让人崩溃。所以,对于实际项目开发来说,最好能将可以封装的工具类封装就进行封装。

下面是一个封装好的SharedPreferences的工具类,如果你有需要直接引用就OK:

package com.example.utl;import java.util.Map;import android.content.Context;
import android.content.SharedPreferences;/*** 保存信息配置类* * @author admin*/
public class SharedPreferencesHelper {private SharedPreferences sharedPreferences;/** 保存手机里面的名字*/private SharedPreferences.Editor editor;public SharedPreferencesHelper(Context context,String FILE_NAME) {sharedPreferences = context.getSharedPreferences(FILE_NAME,Context.MODE_PRIVATE);editor = sharedPreferences.edit();}/*** 存储*/public void put(String key, Object object) {if (object instanceof String) {editor.putString(key, (String) object);} else if (object instanceof Integer) {editor.putInt(key, (Integer) object);} else if (object instanceof Boolean) {editor.putBoolean(key, (Boolean) object);} else if (object instanceof Float) {editor.putFloat(key, (Float) object);} else if (object instanceof Long) {editor.putLong(key, (Long) object);} else {editor.putString(key, object.toString());}editor.commit();}/*** 获取保存的数据*/public Object getSharedPreference(String key, Object defaultObject) {if (defaultObject instanceof String) {return sharedPreferences.getString(key, (String) defaultObject);} else if (defaultObject instanceof Integer) {return sharedPreferences.getInt(key, (Integer) defaultObject);} else if (defaultObject instanceof Boolean) {return sharedPreferences.getBoolean(key, (Boolean) defaultObject);} else if (defaultObject instanceof Float) {return sharedPreferences.getFloat(key, (Float) defaultObject);} else if (defaultObject instanceof Long) {return sharedPreferences.getLong(key, (Long) defaultObject);} else {return sharedPreferences.getString(key, null);}}/*** 移除某个key值已经对应的值*/public void remove(String key) {editor.remove(key);editor.commit();}/*** 清除所有数据*/public void clear() {editor.clear();editor.commit();}/*** 查询某个key是否存在*/public Boolean contain(String key) {return sharedPreferences.contains(key);}/*** 返回所有的键值对*/public Map<String, ?> getAll() {return sharedPreferences.getAll();}
}

登录界面:

 Activity中应用:

/*** 登录界面* * @author admin* */
public class LoginActivity extends Activity implements OnClickListener {private EditText username;private EditText password;private Button login;// 登录按钮private CheckBox holdPwd;// 保存用户和密码private MyDialog mydialog;// 自定义对话框private SharedPreferencesHelper sharedPreferencesHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_login);init();}/*** 初始化界面*/private void init() {sharedPreferencesHelper = new SharedPreferencesHelper(LoginActivity.this, "anhua");username = (EditText) findViewById(R.id.username);password = (EditText) findViewById(R.id.password);holdPwd = (CheckBox) findViewById(R.id.login_hold);holdPwd.setChecked(true);
     //取出存储的值在登陆界面中显示username.setText(sharedPreferencesHelper.getSharedPreference(
"username", "").toString().trim());password.setText(sharedPreferencesHelper.getSharedPreference("password", "").toString().trim());
login
= (Button) findViewById(R.id.login);login.setOnClickListener(this);} @Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.login:login();break;default:break;}}private void login() {String name = username.getText().toString().trim();String pwd = password.getText().toString().trim();
     //如果复选框被选中则存储账户和密码if (holdPwd.isChecked()) {sharedPreferencesHelper.put("username", name);sharedPreferencesHelper.put("password", pwd);sharedPreferencesHelper.put("isremember", holdPwd.isChecked());} else {
       //如果复选框未被选中则清除记录的账号和密码sharedPreferencesHelper.remove(
"username");sharedPreferencesHelper.remove("password");sharedPreferencesHelper.remove("isremember");}login.setBackgroundResource(R.drawable.bg_login_submit);login.setTextColor(getResources().getColor(R.color.white));Intent intent = new Intent(LoginActivity.this, MainActivity.class);startActivity(intent);finish();} }

 

转载于:https://www.cnblogs.com/1925yiyi/p/7489367.html


http://lihuaxi.xjx100.cn/news/239587.html

相关文章

Git学习系列之一些常用的Git命令收录更新ing

不多说&#xff0c;直接上干货&#xff01; 前言 对于Git工具&#xff0c;有必要整理和总结一些常用实用的命令。 http://p.primeton.com/articles/53cce3a3e138236138000026 https://www.zhihu.com/question/22932048 http://blog.csdn.net/w410589502/article/details/536063…

海思涵科技WIFI认证服务器不在线,在海思平台外加一个usb wifi模块,mt7601 加载ok,配置网络ok,但不能ping通?...

请教下&#xff1a;我用mt7601 usb wifi模块加载驱动 配置网络后经常打印PeerBeaconAtJoinAction(): Set CentralChannel1PeerBeaconAtJoinAction(): HT-CtrlChannel5, CentralChannel>5PeerBeaconAtJoinAction(): Set CentralChannel5PeerBeaconAtJoinAction(): HT-CtrlCha…

ios 应用和电脑共享文件夹_堪比AirDrop,苹果 iPhone与Windows电脑互传文件的三种方式...

如果你是苹果全家桶用户&#xff0c;一定会对 「AirDrop(隔空投送)」 功能赞誉有加&#xff0c;使用 AirDrop 可以在 iPhone 与 MacBook、iPad 等设备之间快速传递照片、视频或文件。遗憾的是&#xff0c;「AirDrop 仅限苹果设备之间使用」&#xff0c;而很多小伙伴应该和小兽一…

表格中td限宽溢出以省略号代替

table.ms-listviewtable {table-layout:fixed;width: 100%; } table.ms-listviewtable td[role"gridcell"]{white-space:nowrap;text-overflow:ellipsis;-moz-text-overflow: ellipsis;overflow:hidden; } 转载于:https://www.cnblogs.com/JaneBlog/p/7490445.html

公司成立两周年感言_对我的副项目成立一周年的一些反思

公司成立两周年感言by Will Abramson威尔艾布拉姆森(Will Abramson) 对我的副项目成立一周年的一些反思 (Some reflections on my side project’s first anniversary) My side project turns one this month. It has been a real learning roller coaster.我的副业这个月变成…

Node.js与Sails~方法拦截器policies

policies sails的方法拦截器类似于.net mvc里的Filter&#xff0c;即它可以作用在controller的action上&#xff0c;在服务器响应指定action之前&#xff0c;对这个action进行拦截&#xff0c;先执行policies的策略&#xff0c;当条件通过&#xff0c;会next()它&#xff0c;继…

六年级计算机word处理,六年级上信息技术教案Word大变身用Word制作网页河大版

《六年级上信息技术教案Word大变身用Word制作网页河大版》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《六年级上信息技术教案Word大变身用Word制作网页河大版(2页珍藏版)》请在人人文库网上搜索。1、第 1 课 Word 大变身用 Word 制作网页教学内容&#xff1a;教学目…

失败原因_解析干洗店失败原因

在市面上我们其实也知道有的店面开张时间不长或者最终没有存活下来&#xff0c;干洗店也不例外。我们在看到各地干洗店的高额利润的同时&#xff0c;也会发现一些失败的干洗店。他们的干洗店为何难以运营下去呢?下面伊斯曼小编来在多个方面剖析一下其中的蹊跷和缘由&#xff1…