安卓开发_数据存储技术_SharedPreferences类

SharedPreferences类 供开发人员保存和获取基本数据类型的键值对。

该类主要用于基本类型,例如:booleans,ints,longs,strings。在应用程序结束后,数据仍旧会保存。

有两种方式可以获得SharedPreferences对象

1、getSharedPreferences():  如果需要多个使用名称来区分的共享文件,则可以使用该方法,其第一个参数就是共享文件的名称。

                对于使用同一个名称获得的多个SharedPreferences引用,其指向同一个对象

2、getPreferences():              如果activity仅需要一个共享文件,则可以使用该方法。因为只有一个共享文件,它并不需要提供名称。

向SharedPreferences类中增加值的方法如下

1、调用SharedPreferences类的edit()方法获得SharedPreferences对象

2、调用诸如putString(),putInt()等方法增加相应类型的值

3、使用commit()方法提交新的值

从SharedPreferences类中读取值时,主要使用该类中定义的getXXX()方法。

下面用一个简单的例子来练习SharedPreferences类的使用

首先看布局文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <TextView
 8         android:id="@+id/textView1"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_alignParentLeft="true"
12         android:layout_alignParentTop="true"
13         android:layout_marginLeft="66dp"
14         android:layout_marginTop="64dp"
15         android:text="用户名:" />
16 
17     <TextView
18         android:id="@+id/textView2"
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:layout_alignLeft="@+id/textView1"
22         android:layout_below="@+id/textView1"
23         android:layout_marginTop="32dp"
24         android:text="密码:" />
25 
26     <EditText
27         android:id="@+id/editText1"
28         android:layout_width="wrap_content"
29         android:layout_height="wrap_content"
30         android:layout_alignBaseline="@+id/textView1"
31         android:layout_alignBottom="@+id/textView1"
32         android:layout_toRightOf="@+id/textView1"
33         android:ems="10" />
34 
35     <EditText
36         android:id="@+id/editText2"
37         android:layout_width="wrap_content"
38         android:layout_height="wrap_content"
39         android:layout_alignBaseline="@+id/textView2"
40         android:layout_alignBottom="@+id/textView2"
41         android:layout_alignLeft="@+id/editText1"
42         android:ems="10"
43         android:inputType="textPassword" >
44 
45         <requestFocus />
46     </EditText>
47 
48     <Button
49         android:id="@+id/btn_load"
50         android:layout_width="wrap_content"
51         android:layout_height="wrap_content"
52         android:layout_alignLeft="@+id/editText2"
53         android:layout_below="@+id/editText2"
54         android:layout_marginTop="29dp"
55         android:text="登录" />
56 
57 </RelativeLayout>

一个简单的登录界面。

再看JAVA文件

 1 package data;
 2 
 3 import com.example.allcode.R;
 4 
 5 import android.app.Activity;
 6 import android.content.SharedPreferences;
 7 import android.content.SharedPreferences.Editor;
 8 import android.os.Bundle;
 9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.Button;
12 import android.widget.EditText;
13 import android.widget.Toast;
14 
15 public class Sharedpreference_use extends Activity{
16     private EditText name;
17     private EditText password;
18     private Button load;
19     
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         // TODO Auto-generated method stub
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.data_sharedpreferences);
25         
26         name = (EditText) findViewById(R.id.editText1);
27         password = (EditText) findViewById(R.id.editText2);
28         load = (Button) findViewById(R.id.btn_load);
29         
30         //登录按钮,将用户名和密码存到SharedPreferences对象中存储数据
31         //通过toast显示存储的用户名和密码
32         load.setOnClickListener(new OnClickListener() {
33             
34             @Override
35             public void onClick(View v) {
36                 // TODO Auto-generated method stub
37                 String str_name = name.getText().toString();          //获取用户名编辑框的数据
38                 String str_password = password.getText().toString();  //获取密码框中的数据
39                 
40                 //获得私有类型的SharedPreferences
41                 
42                 SharedPreferences sp = getSharedPreferences("mrsoft", MODE_PRIVATE);
43                 Editor editor = sp.edit();  //获取Editor对象
44                 editor.putString("username", str_name);     //添加用户名
45                   editor.putString("uesrpassword", str_password);   //添加密码
46                 editor.commit(); //提交数据
47                 
48                 //如果在另一个activity中获取SharedPreferences存储的数据 ,要加上下面这行代码,在同一activity种则不需要
49                 //SharedPreferences sp = getSharedPreferences("mrsoft", MODE_PRIVATE);
50                 String get_name = sp.getString("username","0");
51                 String get_password = sp.getString("uesrpassword","1");
52                 53                 Toast.makeText(Sharedpreference_use.this, "通过SharedPreferences存储的用户名为:"+get_name+"密码为:"+get_password, 1).show();
54                 //将获取的用户名和密码的数据通过toast显示出来
55             }
56         });
57         
58         
59     
60     }
61     
62 }

效果图:

SharedPreferences类存储的数据放在shared_prefs文件夹中

data/data/包名  找到你的包名   里面有个shared_prefs文件,保存的文件data.xml就是 SharedPreferences类类保存的数据

该数据是以Map键值对的形式存放在xml文件中的

-------------------------------------------------------------------

相关知识:

安卓开发_数据存储技术_内部存储

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Fish

SharedPreferences存储数据

使用这个可以在不同的Activity中调用并获得里面保存的值。这个貌似是把里面的内容保存在了一个xml文件里。 Android应用开发SharedPrefe...

23410
来自专栏知识分享

Android之TCP服务器编程android 之TCP客户端编程

推荐一个学java或C++的网站http://www.weixueyuan.net/,本来想自己学了总结出来再写博客,现在没时间,打字太慢!!!!,又想让这好东...

7446
来自专栏Android干货

Android接口回调机制

1653
来自专栏Vamei实验室

安卓第八夜 玛丽莲梦露

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 

941
来自专栏Android干货

APP级别处理未捕获异常

3286
来自专栏向治洪

android多线程下载3

今天跟大家一起分享下android开发中比较难的一个环节,可能很多人看到这个标题就会感觉头很大,的确如果没有良好的编码能力和逻辑思维,这块是很难搞明白的,前面2...

1935
来自专栏Android开发与分享

【Android】数据存储(一) SharedPreferences详解

3857
来自专栏分享达人秀

自定义BaseAdapter

在ListView的使用中,有时候还需要在里面加入按钮等控件,实现单独的操作。也就是说,这个ListView不再只是展示数据,也不仅仅是这一行要来处理用...

2178
来自专栏青蛙要fly的专栏

Android技能树 — LayoutInflater Factory小结

前段时间流行起来了突然不愿意写Shape,Selector文件的文章,然后各种方案,编写自定义View等。那时候大家应该都看到了一篇: 无需自定义View,彻底...

1563
来自专栏Vamei实验室

安卓第六夜 凡高的自画像

在上一讲中,我已经制作了一个简单的Android应用。项目的主要文件包括: MainActivity.java activity_main.xml 在这一讲,我...

2117

扫码关注云+社区

领取腾讯云代金券