服务器之家

服务器之家 > 正文

Android持久化技术之SharedPreferences存储实例详解

时间:2021-05-11 17:08     来源/作者:残缺的孤独

本文实例讲述了android持久化技术之sharedpreferences存储。分享给大家供大家参考,具体如下:

1、sharedpreferences存储

在前面一篇文章《android持久化技术之文件的读取与写入实例详解》中,我们介绍了android持久化技术的文件的读取与写入。在本文中,继续介绍android持久化技术另外一个sharedpreferences存储。

(1)sharedpreferences存储方式是基于key-value的,通过key可以找到对应的value。
(2)支持多种数据类型存储,比如字符串、整形、布尔型等,并有对应的存储与获取方法。
(3)获取sharedpreferences对象有多种方式。
使用context类的getsharedpreferences方法。
使用activity类的getpreferences方法
使用preferencemanager类的getdefaultsharedpreferences方法
(4)当存储时,需要通过sharedpreferences对象获取sharedpreferences.editor对象
(5)默认存储路径为:/data/data/包名/shared_prefs/目录
(6)存储文件类型为xml文件

2、示例

场景:点击保存按钮,存储数据;点击恢复按钮,恢复数据。

(1)activity_main.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?xml version="1.0" encoding="utf-8"?>
<tablelayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:stretchcolumns="1"
  >
  <tablerow
    android:id="@+id/tablerow1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <textview
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="account:" />
    <edittext
      android:id="@+id/account"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:hint="input your account here"
      android:ems="10" >
    </edittext>
  </tablerow>
  <tablerow
    android:id="@+id/tablerow2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <textview
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="password:"
       />
    <edittext
      android:id="@+id/password"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:ems="10"
      android:inputtype="textpassword"
      >
    </edittext>
  </tablerow>
  <tablerow
    android:id="@+id/tablerow3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <button
    android:id="@+id/login"
    android:layout_span="2"
    android:layout_height="wrap_content"
    android:text="save data" />
  </tablerow>
  <textview
    android:layout_width="wrap_content"
    android:layout_height="20dp"
    android:background="#ff0000"
    android:text="我是万恶的分割线"
    android:textsize="20sp"
    android:gravity="center"
    />
   <tablerow
    android:id="@+id/tablerow4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <textview
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="account:" />
    <edittext
      android:id="@+id/account2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:ems="10" >
    </edittext>
  </tablerow>
  <tablerow
    android:id="@+id/tablerow5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <textview
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="password:"
       />
    <edittext
      android:id="@+id/password2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:ems="10"
      android:inputtype="textpassword"
      >
    </edittext>
  </tablerow>
  <tablerow
    android:id="@+id/tablerow6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <button
    android:id="@+id/login2"
    android:layout_span="2"
    android:layout_height="wrap_content"
    android:text="restore data" />
  </tablerow>
</tablelayout>

(2)mainactivity.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package com.example.testsharedpreferences;
import android.app.activity;
import android.content.sharedpreferences;
import android.os.bundle;
import android.view.menu;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
import android.widget.edittext;
import android.widget.toast;
/**
 * android 持久化技术-----sharedpreferences存储
 * @author yy
 *
 */
public class mainactivity extends activity {
  private edittext accountedit;
  private edittext passwordedit;
  private button savebutton;
  private button restorebutton;
  private sharedpreferences pref;
  private sharedpreferences.editor editor;
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    //存储按钮
    savebutton = (button) findviewbyid(r.id.login);
    //为存储按钮添加点击事件
    savebutton.setonclicklistener(new onclicklistener() {
      @override
      public void onclick(view arg0) {
        //获取sharedpreferences对象
        //第一个参数:文件名,没有则新建。第二个参数:写入模式-覆盖
        pref = getsharedpreferences("second", mode_private);
        //获取sharedpreferences.editor对象
        editor = pref.edit();
        //获取输入的账号内容
        accountedit = (edittext) findviewbyid(r.id.account);
        string account = accountedit.gettext().tostring();
        //获取输入的密码内容
        passwordedit = (edittext) findviewbyid(r.id.password);
        string password = passwordedit.gettext().tostring();
        //存储用户名和密码
        editor.putstring("account", account);
        editor.putstring("password", password);
        //提交
        editor.commit();
        toast.maketext(getapplicationcontext(), "保存成功", toast.length_short).show();
      }
    });
    //获取恢复按钮对象
    restorebutton = (button) findviewbyid(r.id.login2);
    //添加事件
    restorebutton.setonclicklistener(new onclicklistener() {
      @override
      public void onclick(view arg0) {
        //获取sharedpreference对象
        pref = getsharedpreferences("second", mode_private);
        //读取内容
        string account = pref.getstring("account", "this is default value");
        string password = pref.getstring("password", "this is default value");
        //设置到响应位置
        edittext edittext2 = (edittext)findviewbyid(r.id.account2);
        edittext2.settext(account);
        edittext passwordtext2 = (edittext) findviewbyid(r.id.password2);
        passwordtext2.settext(password);
        toast.maketext(getapplicationcontext(), "恢复成功", toast.length_short).show();
      }
    });
  }
  @override
  public boolean oncreateoptionsmenu(menu menu) {
    // inflate the menu; this adds items to the action bar if it is present.
    getmenuinflater().inflate(r.menu.main, menu);
    return true;
  }
}

3、结果

输入内容后,当点击“save data”按钮后,存储文件为second.xml,如下:

Android持久化技术之SharedPreferences存储实例详解

对应内容:

Android持久化技术之SharedPreferences存储实例详解

下面是效果图:

Android持久化技术之SharedPreferences存储实例详解 Android持久化技术之SharedPreferences存储实例详解

希望本文所述对大家android程序设计有所帮助。

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部