本文实例讲述了android持久化技术之sharedpreferences存储。分享给大家供大家参考,具体如下:
1、sharedpreferences存储
在前面一篇文章《android持久化技术之文件的读取与写入实例详解》中,我们介绍了android持久化技术的文件的读取与写入。在本文中,继续介绍android持久化技术另外一个sharedpreferences存储。
(1)sharedpreferences存储方式是基于key-value的,通过key可以找到对应的value。
(2)支持多种数据类型存储,比如字符串、整形、布尔型等,并有对应的存储与获取方法。
(3)获取sharedpreferences对象有多种方式。
使用context类的getsharedpreferences方法。
使用activity类的getpreferences方法
使用preferencemanager类的getdefaultsharedpreferences方法
(4)当存储时,需要通过sharedpreferences对象获取sharedpreferences.editor对象
(5)默认存储路径为:/data/data/包名/shared_prefs/目录
(6)存储文件类型为xml文件
2、示例
场景:点击保存按钮,存储数据;点击恢复按钮,恢复数据。
(1)activity_main.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<?xml version= "1.0" encoding= "utf-8" ?>
<tablelayout xmlns:android= "http://schemas.android.com/apk/res/android"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
android:stretchcolumns= "1"
>
<tablerow
android:id= "@+id/tablerow1"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content" >
<textview
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:text= "account:" />
<edittext
android:id= "@+id/account"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:hint= "input your account here"
android:ems= "10" >
</edittext>
</tablerow>
<tablerow
android:id= "@+id/tablerow2"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content" >
<textview
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:text= "password:"
/>
<edittext
android:id= "@+id/password"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:ems= "10"
android:inputtype= "textpassword"
>
</edittext>
</tablerow>
<tablerow
android:id= "@+id/tablerow3"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content" >
<button
android:id= "@+id/login"
android:layout_span= "2"
android:layout_height= "wrap_content"
android:text= "save data" />
</tablerow>
<textview
android:layout_width= "wrap_content"
android:layout_height= "20dp"
android:background= "#ff0000"
android:text= "我是万恶的分割线"
android:textsize= "20sp"
android:gravity= "center"
/>
<tablerow
android:id= "@+id/tablerow4"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content" >
<textview
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:text= "account:" />
<edittext
android:id= "@+id/account2"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:ems= "10" >
</edittext>
</tablerow>
<tablerow
android:id= "@+id/tablerow5"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content" >
<textview
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:text= "password:"
/>
<edittext
android:id= "@+id/password2"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:ems= "10"
android:inputtype= "textpassword"
>
</edittext>
</tablerow>
<tablerow
android:id= "@+id/tablerow6"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content" >
<button
android:id= "@+id/login2"
android:layout_span= "2"
android:layout_height= "wrap_content"
android:text= "restore data" />
</tablerow>
</tablelayout>
|
(2)mainactivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
package com.example.testsharedpreferences;
import android.app.activity;
import android.content.sharedpreferences;
import android.os.bundle;
import android.view.menu;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.edittext;
import android.widget.toast;
/**
* android 持久化技术-----sharedpreferences存储
* @author yy
*
*/
public class mainactivity extends activity {
private edittext accountedit;
private edittext passwordedit;
private button savebutton;
private button restorebutton;
private sharedpreferences pref;
private sharedpreferences.editor editor;
@override
protected void oncreate(bundle savedinstancestate) {
super .oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
//存储按钮
savebutton = (button) findviewbyid(r.id.login);
//为存储按钮添加点击事件
savebutton.setonclicklistener( new onclicklistener() {
@override
public void onclick(view arg0) {
//获取sharedpreferences对象
//第一个参数:文件名,没有则新建。第二个参数:写入模式-覆盖
pref = getsharedpreferences( "second" , mode_private);
//获取sharedpreferences.editor对象
editor = pref.edit();
//获取输入的账号内容
accountedit = (edittext) findviewbyid(r.id.account);
string account = accountedit.gettext().tostring();
//获取输入的密码内容
passwordedit = (edittext) findviewbyid(r.id.password);
string password = passwordedit.gettext().tostring();
//存储用户名和密码
editor.putstring( "account" , account);
editor.putstring( "password" , password);
//提交
editor.commit();
toast.maketext(getapplicationcontext(), "保存成功" , toast.length_short).show();
}
});
//获取恢复按钮对象
restorebutton = (button) findviewbyid(r.id.login2);
//添加事件
restorebutton.setonclicklistener( new onclicklistener() {
@override
public void onclick(view arg0) {
//获取sharedpreference对象
pref = getsharedpreferences( "second" , mode_private);
//读取内容
string account = pref.getstring( "account" , "this is default value" );
string password = pref.getstring( "password" , "this is default value" );
//设置到响应位置
edittext edittext2 = (edittext)findviewbyid(r.id.account2);
edittext2.settext(account);
edittext passwordtext2 = (edittext) findviewbyid(r.id.password2);
passwordtext2.settext(password);
toast.maketext(getapplicationcontext(), "恢复成功" , toast.length_short).show();
}
});
}
@override
public 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 ;
}
}
|
3、结果
输入内容后,当点击“save data”按钮后,存储文件为second.xml,如下:
对应内容:
下面是效果图:
希望本文所述对大家android程序设计有所帮助。