SharedPreferences 类读写 XML 文件

SharedPreferences 类位于 android.content 包中,是一个接口。如果要写入文件,还需要 SharedPreferences 的内部类 Editor,二者操作的都是 XML 文件。主要用来存储程序的配置信息,是否开启声音、震动、游戏等级、经验等。

通过 Content 类的 getSharedPreferences(String name, int mode) 方法获取实例。

mode 参数:

1、MODE_PRIVATE,声明 SharedPreferences 操作的文件只能供本应用程序使用,其他应用程序无法访问。

2、MODE_WORLD_READABLE,声明 SharedPreferences 操作的文件可以被其他应用程序读,但不能写。

3、MODE_WORLD_WRITEABLE,声明 SharedPreferences 操作的文件可以被其他应用程序读写。

4、MODE_MULTI_PROCESS,不再使用。

Editor 也是一个接口,只能通过 SharedPreferences 类的 edit() 方法获取实例。

 1 import android.os.Bundle;
 2 import android.app.Activity;
 3 import android.content.Context;
 4 import android.content.SharedPreferences;
 5 import android.content.SharedPreferences.Editor;
 6 import android.view.Menu;
 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 MainActivity extends Activity implements OnClickListener{
13     
14     EditText et1,et2;
15     Button b1,b2;
16     SharedPreferences sf;
17     
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         
22         setContentView(R.layout.activity_main);
23         et1 = (EditText) findViewById(R.id.et_name);
24         et2 = (EditText) findViewById(R.id.et_pwd);
25         b1 = (Button) findViewById(R.id.bt_save);
26         b2 = (Button) findViewById(R.id.bt_read);
27         b1.setOnClickListener(this);
28         b2.setOnClickListener(this);
29         
30         // 获取 SharedPreferences 实例,读写 login.xml 文件,方式为独占
31         sf = getSharedPreferences("login", Context.MODE_PRIVATE);
32     }
33     
34     @Override
35     public void onClick(View view) {
36         
37         switch(view.getId()){
38         case R.id.bt_save:
39             save();
40             break;
41         case R.id.bt_read:
42             read();
43             break;
44         }
45     }
46     
47     // 读取文件
48     private void read() {
49         
50         // 读取字符串
51         String name = sf.getString("name", "请输入新登录名");
52         String pwd = sf.getString("pwd", "");
53         et1.setText(name);
54         et2.setText(pwd);
55     }
56     
57     // 保存文件
58     private void save() {
59         
60         // 获取 Editor 实例
61         Editor et = sf.edit();
62         // 保存字符串
63         et.putString("name", et1.getEditableText().toString());
64         et.putString("pwd", et2.getEditableText().toString());
65         // 提交
66         et.commit();
67         // 清空
68         et1.setText("");
69         et2.setText("");
70     }
71 }
MainActivity.java

布局文件

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10     
11     <TextView
12         android:id="@+id/tv_name"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="账户:" />
16     <EditText 
17         android:layout_width="match_parent"
18         android:layout_height="wrap_content"
19         android:id="@+id/et_name"
20         android:layout_toRightOf="@id/tv_name"
21         />
22     <TextView
23         android:id="@+id/tv_pwd"
24         android:layout_width="wrap_content"
25         android:layout_height="wrap_content"
26         android:text="密码:"
27         android:layout_below="@id/et_name"
28          />
29     <EditText 
30         android:layout_width="match_parent"
31         android:layout_height="wrap_content"
32         android:id="@+id/et_pwd"
33         android:layout_below="@id/et_name"
34         android:layout_alignLeft="@id/et_name"
35         android:inputType="textPassword"
36         />
37     
38     <LinearLayout 
39         android:orientation="horizontal"
40         android:layout_width="fill_parent"
41         android:layout_height="wrap_content"
42         android:gravity="center_horizontal"
43         android:layout_below="@id/et_pwd"
44         >
45         <Button 
46             android:id="@+id/bt_save"
47             android:layout_width="wrap_content"
48             android:layout_height="wrap_content"
49             android:text="保存"
50             />
51         <Button 
52             android:id="@+id/bt_read"
53             android:layout_width="wrap_content"
54             android:layout_height="wrap_content"
55             android:text="读取"
56             />
57         
58     </LinearLayout>
59     
60     
61     
62 </RelativeLayout>
activity_main.xml

DDMS/File Explorer

data/data/包名/shared_prefs/login.xml

1 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
2 <map>
3 <string name="pwd">123</string>
4 <string name="name">123</string>
5 </map>

 

posted @ 2015-05-25 10:04  壬子木  阅读(560)  评论(0)    收藏  举报