开发者社区> 听着music睡> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: SharedPreferences类 供开发人员保存和获取基本数据类型的键值对。 该类主要用于基本类型,例如:booleans,ints,longs,strings。在应用程序结束后,数据仍旧会保存。
+关注继续查看

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>
View Code

一个简单的登录界面。

再看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文件中的

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

相关知识:

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite
Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite 前不久,我在写了ORMLite这个框架的博文 Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包 但是对于我个人来说,我可能更加倾向于用GreenDao,所以今天也为.
1174 0
Android多线程下操作sqlite数据库解决方案
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/62217743 问题:Android中的SQLite数据库并发访问 attempt to re-open an already-closed object 因为我们只使用一个数据库连接,Thread1和Thread2的都是由getDatabase()方法返回的相同连接。
545 0
07_Android操作sqllite数据库(包括2中方式操作数据的方式),单元测试,BaseAdapter的使用,自定义view的综合使用案例
 1 目标从sqllite中读取数据并显示如下: MainActivity对应的界面 MainActivity2对应的界面           2  配置Android的清单文件 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;manifest xm
877 0
安卓开发_数据存储技术_内部存储
安卓内部存储就是将信息保存在一个文件中放入手机内部一个特定的目录下,特别要注意,这里的内部存储不是内存存储。内部存储是系统中一个很特殊的位置。 读取数据都是根据文件名称来执行 下面根据一个简单的Demo来学习下内部存储 一、先看下Demo布局 功能就是: 1、输入文件名 和文件内容点击...
558 0
安卓开发_数据存储技术_sqlite
一、SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了。SQLite已经被多种软件和产品使用   二、SQLite特性 1 2 1、轻量级 3 SQLite和C\S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。
611 0
Android的移动存储解决方案“.NET研究”之SharedPreferences
  搞Android有一段时间了,但是并没写过有关Android的博客,今天给大家介绍一下SharedPreferences。     使用SharedPreferences保存key-value对的步骤如下:   (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
616 0
+关注
听着music睡
Android开发工程师
文章
问答
文章排行榜
最热
最新
相关电子书
更多
58同城Android客户端Walle框架演进与实践之路
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载