Android学习笔记之数据的共享存储SharedPreferences
来源:互联网 发布:淘宝刷流量软件有用吗 编辑:程序博客网 时间:2024/05/22 03:15
(1)布局文件,一个简单的登录文件;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="22dp" android:layout_marginTop="22dp" android:text="用户名:" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/textView1" android:layout_toRightOf="@+id/textView1" android:ems="10" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView1" android:layout_below="@+id/editText1" android:layout_marginTop="17dp" android:text="密码:" /> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:ems="10" android:inputType="textPassword" > <requestFocus /> </EditText> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/checkBox1" android:layout_marginLeft="34dp" android:layout_marginTop="32dp" android:layout_toRightOf="@+id/button1" android:text="取消" /> <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/editText2" android:layout_marginTop="22dp" android:text="记住用户名" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button2" android:layout_alignBottom="@+id/button2" android:layout_alignLeft="@+id/editText2" android:text="登录" /> <CheckBox android:id="@+id/checkBox2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/checkBox1" android:layout_alignBottom="@+id/checkBox1" android:layout_marginLeft="14dp" android:layout_toRightOf="@+id/button1" android:text="静音登录" /></RelativeLayout>
(2)目录结构:
(3)SharedPreferences的工具类LoginService.java
package com.lc.data_storage_share.sharepreference;import java.util.Map;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;public class LoginService {private Context context; // 上下文public LoginService(Context context) {this.context = context;}/* * 保存登录信息 */public boolean saveLoginMsg(String name, String password) {boolean flag = false;// 不要加后缀名,系统自动以.xml的格式保存// 这里的login是要存放的文件名SharedPreferences preferences = context.getSharedPreferences("login",context.MODE_PRIVATE + context.MODE_APPEND);Editor editor = preferences.edit();editor.putString("name", name);editor.putString("password", password);flag = editor.commit();return flag;}/* * 保存文件 */public boolean saveSharePreference(String filename, Map<String, Object> map) {boolean flag = false;SharedPreferences preferences = context.getSharedPreferences(filename,Context.MODE_PRIVATE);/* * 存数据的时候要用到Editor */Editor editor = preferences.edit();for (Map.Entry<String, Object> entry : map.entrySet()) {String key = entry.getKey();Object object = entry.getValue();if (object instanceof Boolean) {Boolean new_name = (Boolean) object;editor.putBoolean(key, new_name);} else if (object instanceof Integer) {Integer integer = (Integer) object;editor.putInt(key, integer);} else if (object instanceof Float) {Float f = (Float) object;editor.putFloat(key, f);} else if (object instanceof Long) {Long l = (Long) object;editor.putLong(key, l);} else if (object instanceof String) {String s = (String) object;editor.putString(key, s);}}flag = editor.commit();return flag;}/* * 读取文件 */public Map<String, ?> getSharePreference(String filename) {Map<String, ?> map = null;SharedPreferences preferences = context.getSharedPreferences(filename,Context.MODE_PRIVATE);/* * 读数据的饿时候只需要访问即可 */map = preferences.getAll();return map;}}
(3)MainActivity.java
package com.lc.data_storage_share;import java.util.HashMap;import java.util.Map;import com.example.data_storage_share.R;import com.lc.data_storage_share.sharepreference.LoginService;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;/* * 单元测试的时候需要在清单文件中 */public class MainActivity extends Activity {private Button button1;// 登录private Button button2;// 取消private EditText editText1, editText2;private CheckBox checkBox1;// 记住密码private CheckBox checkBox2; // 静音登录private LoginService service;Map<String, ?> map = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button1 = (Button) this.findViewById(R.id.button1);button2 = (Button) this.findViewById(R.id.button2);editText1 = (EditText) this.findViewById(R.id.editText1);editText2 = (EditText) this.findViewById(R.id.editText2);checkBox1 = (CheckBox) this.findViewById(R.id.checkBox1);checkBox2 = (CheckBox) this.findViewById(R.id.checkBox2);service = new LoginService(this);map = service.getSharePreference("login");if (map != null && !map.isEmpty()) {editText1.setText(map.get("username").toString());checkBox1.setChecked((Boolean) map.get("isName"));checkBox2.setChecked((Boolean) map.get("isquiet"));} button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (editText1.getText().toString().trim().equals("admin")) {Map<String, Object> map1 = new HashMap<String, Object>();if (checkBox1.isChecked()) {map1.put("username", editText1.getText().toString().trim());}else {map1.put("username", "");}map1.put("isName", checkBox1.isChecked());map1.put("isquiet", checkBox2.isChecked());service.saveSharePreference("login", map1);}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
(4)测试类:
package com.lc.data_storage_share;import java.util.HashMap;import java.util.Map;import android.test.AndroidTestCase;import android.util.Log;import com.lc.data_storage_share.sharepreference.LoginService;public class MyTest extends AndroidTestCase {private final String TAG = "MyTest";public MyTest() {// TODO Auto-generated constructor stub}/* * 登录 */public void save() {LoginService service = new LoginService(getContext());boolean flag = service.saveLoginMsg("admin", "123");Log.i(TAG, "-->>" + flag);}/* * 保存文件 */public void saveFile() {LoginService service = new LoginService(getContext());Map<String, Object> map = new HashMap<String, Object>();map.put("name", "jack");map.put("age", 23);map.put("salary", 23000.0f);map.put("id", 1256423132l);map.put("isManager", true);boolean flag = service.saveSharePreference("msg", map);Log.i(TAG, "-->>" + flag);}/* * 读取文件 */public void readFile() {LoginService service = new LoginService(getContext());Map<String, ?> map = service.getSharePreference("msg");Log.i(TAG, "-->>" + map.get("name"));Log.i(TAG, "-->>" + map.get("age"));Log.i(TAG, "-->>" + map.get("salary"));Log.i(TAG, "-->>" + map.get("isManager"));Log.i(TAG, "-->>" + map.get("id"));}}
如何添加Junit测试单元:
1.在清单文件中添加:
2.在application中添加:
3.测试类MyTest要继承AndroidTestCase
(5)结果,下次登录的时候会记着用户名
1 0
- Android学习笔记之数据的共享存储SharedPreferences
- Android 数据存储之 共享参数 SharedPreferences
- Android编程学习笔记 之 SharedPreferences数据存储
- android 数据存储SharedPreferences 学习笔记
- Android笔记之数据存储(SharedPreferences)
- Android数据存储--SharedPreferences--共享数据存储
- Android学习之SharedPreferences数据存储
- Android数据存储之SharedPreferences 共享首选项/偏好设置
- Android之Android的数据存储--SharedPreferences
- Android之SharedPreferences的数据存储
- Android的数据存储之SharedPreferences
- 数据存储之SharedPreferences存储——第一行代码Android学习笔记
- android数据存储--共享参数(sharedPreferences)
- Android数据存储SharedPreferences共享参数
- Android中数据的存储之------SharedPreferences存储数据
- Android学习笔记十二.Android数据存储与IO.SharedPreferences
- Android数据存储之SharedPreferences
- Android数据存储之SharedPreferences
- activemq的连接池,通过spring的JmsTemplate发送消息到指定的Destination
- SDUT 1591 交叉排序
- oracle 数据类型详解---日期型(转载)
- 经常遇到Please ensure that adb is correctly located at 'D:\java\sdk\platform-tools\adb.exe' and can be
- Java.util.date 与 java.sql.date区别和转换
- Android学习笔记之数据的共享存储SharedPreferences
- 什麼是解析度?
- 黑马程序员——图片浏览器
- 圖片檔案類型簡介
- XENAPP 7.6 和XENDESKTOP 7.6 初体验之一 安装
- 副檔名
- XENAPP 7.6和 XENDESKTOP 7.6 初体验之二 新建站点
- .tar.bz2 解压出错问题解决方案
- 黑马程序员——Java基础—IO流(File)