Android采用SharedPreferences保存数据
使用SharedPreferences在程序的数据空间中生成xml文档来保存数据
基本操作:
1
package
com.hu.data;
2
3
import
android.app.Activity;
4
import
android.content.SharedPreferences;
5
import
android.content.SharedPreferences.Editor;
6
import
android.os.Bundle;
7
import
android.view.View;
8
import
android.view.View.OnClickListener;
9
import
android.widget.Button;
10
import
android.widget.EditText;
11
12
public
class
ShDemoActivity
extends
Activity {
13
14
private
EditText etName,etAge,etScore;
15
private
Button btWrite,btRead;
16
private
SharedPreferences sharedPrefrences;
17
private
Editor editor;
18
19
@Override
20
public
void
onCreate(Bundle savedInstanceState) {
21
super
.onCreate(savedInstanceState);
22
setContentView(R.layout.main);
23
24
etName = (EditText) findViewById(R.id.editTextName);
//
得到控件
25
etAge =
(EditText) findViewById(R.id.editTextAge);
26
etScore =
(EditText) findViewById(R.id.editTextScore);
27
btWrite =
(Button) findViewById(R.id.buttonWrite);
28
btRead =
(Button) findViewById(R.id.buttonRead);
29
30
sharedPrefrences =
this
.getSharedPreferences("user", MODE_WORLD_READABLE);
//
得到SharedPreferences,会生成user.xml
31
editor =
sharedPrefrences.edit();
32
33
btWrite.setOnClickListener(
new
OnClickListener() {
//
写入按钮事件
34
35
public
void
onClick(View arg0) {
36
String name =
etName.getText().toString();
37
int
age =
Integer.parseInt(etAge.getText().toString());
38
float
score = Float.parseFloat(etScore.getText().toString());
//
获取用户输入数据
39
editor.putString("name"
, name);
40
editor.putInt("age"
, age);
41
editor.putFloat("score", score);
//
将数据写入xml
42
editor.commit();
//
提交
43
}
44
});
45
46
btRead.setOnClickListener(
new
OnClickListener() {
//
读出按钮事件
47
48
public
void
onClick(View v) {
49
String name = sharedPrefrences.getString("name",
null
);
50
int
age = sharedPrefrences.getInt("age", 0
);
51
float
score = sharedPrefrences.getFloat("score", 60.0f);
//
将数据读出
52
etName.setText(name);
53
etAge.setText(Integer.toString(age));
54
etScore.setText(Float.toString(score));
//
显示数据
55
}
56
});
57
58
}
59
}
布局文件为:
1
<?
xml version="1.0" encoding="utf-8"
?>
2
<
LinearLayout
xmlns:android
="http://schemas.android.com/apk/res/android"
3
android:layout_width
="fill_parent"
4
android:layout_height
="fill_parent"
5
android:orientation
="vertical"
>
6
7
<
LinearLayout
8
android:layout_width
="match_parent"
9
android:layout_height
="wrap_content"
>
10
11
<
TextView
12
android:id
="@+id/textView1"
13
android:layout_width
="wrap_content"
14
android:layout_height
="wrap_content"
15
android:text
="姓名:"
16
android:textAppearance
="?android:attr/textAppearanceLarge"
/>
17
18
<
EditText
19
android:id
="@+id/editTextName"
20
android:layout_width
="wrap_content"
21
android:layout_height
="wrap_content"
22
android:layout_weight
="1"
>
23
24
<
requestFocus
/>
25
</
EditText
>
26
</
LinearLayout
>
27
28
<
LinearLayout
29
android:layout_width
="match_parent"
30
android:layout_height
="wrap_content"
>
31
32
<
TextView
33
android:id
="@+id/textView2"
34
android:layout_width
="wrap_content"
35
android:layout_height
="wrap_content"
36
android:text
="年龄:"
37
android:textAppearance
="?android:attr/textAppearanceLarge"
/>
38
39
<
EditText
40
android:id
="@+id/editTextAge"
41
android:layout_width
="wrap_content"
42
android:layout_height
="wrap_content"
43
android:layout_weight
="1"
/>
44
</
LinearLayout
>
45
46
<
LinearLayout
47
android:layout_width
="match_parent"
48
android:layout_height
="wrap_content"
>
49
50
<
TextView
51
android:id
="@+id/textView3"
52
android:layout_width
="wrap_content"
53
android:layout_height
="wrap_content"
54
android:text
="分数:"
55
android:textAppearance
="?android:attr/textAppearanceLarge"
/>
56
57
<
EditText
58
android:id
="@+id/editTextScore"
59
android:layout_width
="wrap_content"
60
android:layout_height
="wrap_content"
61
android:layout_weight
="1"
/>
62
</
LinearLayout
>
63
64
<
LinearLayout
65
android:layout_width
="match_parent"
66
android:layout_height
="wrap_content"
>
67
68
<
Button
69
android:id
="@+id/buttonWrite"
70
android:layout_width
="wrap_content"
71
android:layout_height
="wrap_content"
72
android:text
="写入"
/>
73
74
<
Button
75
android:id
="@+id/buttonRead"
76
android:layout_width
="wrap_content"
77
android:layout_height
="wrap_content"
78
android:text
="读出"
/>
79
</
LinearLayout
>
80
81
</
LinearLayout
>
操作界面:
保存的内容为:
1
<?
xml version='1.0' encoding='utf-8' standalone='yes'
?>
2
<
map
>
3
<
float
name
="score"
value
="89.22"
/>
4
<
string
name
="name"
>
Steve
</
string
>
5
<
int
name
="age"
value
="21"
/>
6
</
map
>
SharePreferences存储数据是通过获取Editor编辑器对象来操作的。
插入数据:
调用Editor.putxxxx方法,两个参数分别为键和值。
获取数据:
调用Editor.getxxxx方法,两个参数分别为键和不存在指定键时的默认值。
删除数据:
调用Editor.remove方法,参数为指定的键。
清空所有数据:
调用Editor.clear方法
上述所有方法调用都要执行Editor.commit方法来提交。

