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方法来提交。