SharedPreferences

SharedPreferences类似于Cookies
优点: 简单、方便、适合简单数据的快速保存
           缺点:1.存数的文件只能在同一包内使用,不能在不同包之间使用!
 
            2.默认将数据存放在系统路径下 /data/data/包名/  
           总结:其实本保存方式如同它的名字一样是个配置保存,虽然方便,但只适合存储比较简单的数据!

几点说明:
1. SharedPreferences的获取有两种方法:一是上面提到的通过Activity自带(本质来讲是Context的)的getSharedPreferences()方法,可以得到SharedPreferences对象。这种方法的好处是可以指定保存的xml文件名。另一种是通过PreferenceManager.getSharedPreferences(Context)获取SharedPreferences对象。这种方法不能指定保存的xml文件名,文件名使用默认的:<package name>+"_preferences.xml"的形式,不过如果在一个包里面采用这种方式需要保存多个这样的xml文件,可能会乱掉。建议采用第一种指定xml文件名的形式。
2. 数据的存入必须通过SharedPreferences对象的编辑器对象Editor来实现,存入(put)之后与写入数据库类似一定要commit。
1.
2.
3. /*
4. * @保存方式:SharedPreference
5. * @注意:SharedPreference 只能在同一包内使用,不能在不同包之间使用!
6. * @操作模式: Context.MODE_PRIVATE:新内容覆盖原内容
7. *            Context.MODE_APPEND:新内容追加到原内容后
8. *            Context.MODE_WORLD_READABLE:允许其他应用程序读取
9. *            Context.MODE_WORLD_WRITEABLE:允许其他应用程序写入,会覆盖原数据。
10. */  
11.
12. package cn.android.preference;   
13.   
14. import android.app.Activity;   
15. import android.content.SharedPreferences;   
16. import android.content.SharedPreferences.Editor;   
17. import android.os.Bundle;   
18. import android.view.View;   
19. import android.widget.Button;   
20. import android.widget.EditText;   
21. import android.widget.Toast;   
22.   
23. /**
24. * SharedPreferences实现参数化的数据保存与读取
25. * @author Administrator
26. *
27. * 2010-6-30 下午02:35:44
28. */  
29. public class PreferenceActivity extends Activity {   
30.   
31.     //定义一个文本输入框,用于得到输入的name值   
32.     private EditText nameText;   
33.     //定义一个文本输入框,用于得到输入的age值   
34.     private EditText ageText;   
35.        
36.        
37.     @Override  
38.     public void onCreate(Bundle savedInstanceState) {   
39.         super.onCreate(savedInstanceState);   
40.          setContentView(R.layout.main);   
41.            
42.         //通过id得到id为name输入框   
43.          nameText = (EditText) findViewById(R.id.name);   
44.         //通过id得到id为age输入框   
45.          ageText = (EditText) findViewById(R.id.age);   
46.            
47.         //通过id得到保存按钮   
48.          Button saveButton = (Button) findViewById(R.id.save);   
49.         //通过id得到读取按钮   
50.          Button readButton = (Button) findViewById(R.id.read);   
51.            
52.         //为保存按钮添加事件   
53.          saveButton.setOnClickListener(new View.OnClickListener() {   
54.   
55.             @Override  
56.             public void onClick(View v) {   
57.                 //通过Activity自带的getSharedPreferences方法,得到SharedPreferences对象   
58.                 //第一个参数表示保存后 xml 文件的名称(底层实现是将数据保存到xml文档中)。   
59.                 //第二个参数表示xml文档的权限为私有,并且重新写的数据会覆盖掉原来的数据   
60.                  SharedPreferences preferences = getSharedPreferences("user", PreferenceActivity.MODE_WORLD_READABLE);   
61.                    
62.                 //通过preferences得到它的编辑器对象edit   
63.                  Editor edit = preferences.edit();   
64.                 //通过编辑器将name属性和对应的nameText中输入的值写入到xml文档中   
65.                  edit.putString("name", nameText.getText().toString());   
66.                 //通过编辑器将age属性和对应的ageText中输入的值写入到xml文档中   
67.                  String ageStr = ageText.getText().toString();   
68.                 if(ageStr != null || "".equals(ageStr.trim()))   
69.                      edit.putInt("age", new Integer(ageStr));   
70.                 //添加数据完成后,提交编辑器的添加操作   
71.                  edit.commit();   
72.                 //提示用户保存成功   
73.                  Toast.makeText(PreferenceActivity.this, R.string.save_success, Toast.LENGTH_LONG).show();   
74.              }   
75.                
76.          });   
77.            
78.         //为读取按钮添加时间   
79.          readButton.setOnClickListener(new View.OnClickListener() {   
80.   
81.             @Override  
82.             public void onClick(View v) {   
83.                 //通过Activity自带的getSharedPreferences方法,得到SharedPreferences对象   
84.                 //此时的第一个参数表示当前应用中的user.xml文件   
85.                 //如果只读的话,第二个参数没有什么意义,但方法参数需要,可以随便写   
86.                  SharedPreferences preferences = getSharedPreferences("user", PreferenceActivity.MODE_PRIVATE);   
87.                 //得到文件中的name标签值,第二个参数表示如果没有这个标签的话,返回的默认值   
88.                  String name = preferences.getString("name", "");   
89.                 //得到文件中的age标签值,第二个参数表示如果没有这个标签的话,返回的默认值   
90.                  Integer age = preferences.getInt("age", 0);   
91.                 //将读取的name值显示在文本编辑框nameText中   
92.                  nameText.setText(name);   
93.                 //将读取的age值显示在文本编辑框ageText中   
94.                  ageText.setText(age + "");   
95.                 //提示用户读取成功   
96.                  Toast.makeText(PreferenceActivity.this, R.string.read_success, Toast.LENGTH_LONG).show();   
97.              }   
98.                
99.          });   
100.      }   
101. }   
102.   
103.   
104. ------------------------------------------------------------------>   
105. 页面布局mian.xml文件:   
106. <?xml version="1.0" encoding="utf-8"?>   
107. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
108.      android:orientation="vertical"  
109.      android:layout_width="fill_parent"  
110.      android:layout_height="fill_parent">   
111.        
112.      <LinearLayout   
113.          android:orientation="horizontal"  
114.          android:layout_width="fill_parent"  
115.          android:layout_height="wrap_content">   
116.        
117.          <TextView     
118.              android:layout_width="wrap_content"   
119.              android:layout_height="wrap_content"   
120.              android:text="@string/name"/>   
121.                
122.          <EditText   
123.              android:layout_width="fill_parent"   
124.              android:layout_height="wrap_content"   
125.              android:id="@+id/name"   />   
126.       
127.      </LinearLayout>   
128.        
129.      <LinearLayout   
130.          android:orientation="horizontal"  
131.          android:layout_width="fill_parent"  
132.          android:layout_height="wrap_content">   
133.        
134.          <TextView     
135.              android:layout_width="wrap_content"   
136.              android:layout_height="wrap_content"   
137.              android:text="@string/age"/>   
138.                
139.          <EditText   
140.              android:layout_width="fill_parent"   
141.              android:layout_height="wrap_content"   
142.              android:id="@+id/age"    />   
143.       
144.      </LinearLayout>   
145.        
146.      <LinearLayout   
147.          android:orientation="horizontal"  
148.          android:layout_width="fill_parent"  
149.          android:layout_height="wrap_content">   
150.            
151.          <Button   
152.              android:layout_width="wrap_content"   
153.              android:layout_height="wrap_content"   
154.              android:text="@string/save"   
155.              android:id="@+id/save" />   
156.                
157.          <Button   
158.              android:layout_width="wrap_content"   
159.              android:layout_height="wrap_content"   
160.              android:text="@string/read"   
161.              android:id="@+id/read" />   
162.       
163.      </LinearLayout>   
164.        
165. </LinearLayout>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值