Android-SharedPreference

SharedPreferences 是一种轻型的数据存储方式,它的本质是基于XML文件存储Key-Value键值对数据,通常用来存储一些简单的配置信息,其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改时通过Editor对象实现。
SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等操作,更加易用。但是SharedPreferences仅支持以下数据类型:

  • boolean
  • int
  • float
  • long
  • String

但是无法进行条件查询等,所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库等其他数据存储方法。

SharedPreferences preferences = getPreferences(Activity.MODE_PRIVATE);
Editor editor = preferences.edit();

写入数据:

editor.putString(KEY, et.getText().toString());
if (editor.commit()) {
    Toast.makeText(getApplicationContext(), "写入成功", Toast.LENGTH_SHORT).show();
}

读取数据

String string = preferences.getString(KEY, "当前数值不存在");
Toast.makeText(getApplicationContext(), string, Toast.LENGTH_SHORT).show();

PreferenceActivity
SharedPreference 是纯操作,如果需要配合界面的话,则需要额外的开发,PreferenceActivity提供了一种快速创建配置首选项界面的方法,并且自动在后台存储首选项数据。
为操作PreferenceActivity,可先在res文件加下新建一个xml文件夹,然后在xml文件夹下创建一个名为myprefrence.xml的xml文件,如下:
这里写图片描述

新建一个名为MyPreferenceActivity,继承自PreferenceActivity,重写onCreate()方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.myprefrence);
}

PreferenceActivity中主要使用到有三种内容的Preference:
CheckBoxPreference
在myprefrence.xml的xml中,如下定义:

<CheckBoxPreference
    android:key="checkbox"
    android:summaryOff="已近关闭"
    android:summaryOn="已经开启"
    android:title="是否开启" />

获取状态:

    PreferenceManager manager = getPreferenceManager();
    checkBoxPreference = (CheckBoxPreference) manager.findPreference("checkbox");
    Toast.makeText(getApplicationContext(), "当前的状态为:"+checkBoxPreference.isChecked(), Toast.LENGTH_SHORT).show();

这里写图片描述

ListPreference
定义:

<ListPreference 
    android:key="list"
    android:title="选择一个选项"
    android:summary="请点击选择"
    android:entries="@array/entries"
    android:entryValues="@array/values"/>

获取状态:

    listPreference = (ListPreference) manager.findPreference("list");
    Toast.makeText(getApplicationContext(), listPreference.getEntry()+"当前的开发环境:"+listPreference.getValue(), Toast.LENGTH_SHORT).show();

这里写图片描述这里写图片描述

EditTextPreference
定义:

<EditTextPreference
    android:dialogTitle="请输入你的名字"
    android:dialogMessage="有劳了"
    android:summary="请在此输入"
    android:title="请输入"
    android:key="text"/>

获取状态

    editTextPreference = (EditTextPreference) manager.findPreference("text");
    Toast.makeText(getApplicationContext(), editTextPreference.getText(), Toast.LENGTH_SHORT).show();

这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值