android之知识点小结二[通俗易懂]

SharedPreferences的使用:在这里也是偏向于使用android自带的SharedPreferences管理机制,简要说明使用流程,备忘:首先在主activity里面初始化SharedPreferences,SharedPreferences prefs=null;…@Override public void onCreate(Bundle savedIns

大家好,又见面了,我是全栈君。SharedPreferences的使用:

在这里也是偏向于使用android自带的SharedPreferences管理机制,简要说明使用流程,备忘:

首先在主activity里面初始化SharedPreferences,

SharedPreferences prefs=null;
...
@Override
 public void onCreate(Bundle savedInstanceState) {
...
prefs=PreferenceManager.getDefaultSharedPreferences(this);
...
/*注册SharedPreferences的监听器,一旦SharedPreferences发生变化,则触发监听器,进行一些操作,比如这里是通过SharedPreferences设置列表的排序方式,一旦排序方式的设置改变,则*SharedPreferences的存储内容改变,则触发监听器,进行列表的重新初始化
*/
prefs.registerOnSharedPreferenceChangeListener(prefListener);
...
}
.
.
.
private SharedPreferences.OnSharedPreferenceChangeListener prefListener=
  new SharedPreferences.OnSharedPreferenceChangeListener() {
  public void onSharedPreferenceChanged(SharedPreferences sharedPrefs, String key) {
   if (key.equals("sort_order")) {//这里就是监听器的具体操作,通过判断是某一个SharedPreferences的变化,进行相应操作
    initList();//重新初始化列表
   }
  }
 };.
.
private void initList() {
...
model=helper.getAll(where, prefs.getString("sort_order", "name"));
//在这里需要通过prefs.getString("sort_order", "name")获取SharedPreferences中存取的具体内容,即采取何种排列方式,如果结果为空,则返回"name",按姓名排序
...
}

上面则完成了对SharedPreferences的一系列操作,从初始化和注册监听器,监听变化,以及变化后做出相应操作,

那么是如何唤出SharedPreferences的设置界面,并且存储是如何实现的呢,
这里采用的是

  if (item.getItemId()==R.id.prefs) {
   startActivity(new Intent(this, EditPreferences.class));
  }

就是在菜单里加一个prefs设置选项,点击它则启动定义的SharedPreferences设置界面,这个界面就直接继承PreferenceActivity,可以方便高效的实现Preference的存储和管理.代码如下:

public class EditPreferences extends PreferenceActivity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.preferences);//这个方法的实现就内置了SharedPreferences的存储方法,所以无需我们自己再去存储SharedPreferences
	}
}

代码是很简单的,只需要addPreferencesFromResource(R.xml.preferences);这个设置显示界面就可以了,

界面代码res/xml/preferences.xml:

<PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
	<ListPreference
		android:key="sort_order"
		android:title="Sort Order"
		android:summary="Choose the order the list uses"
		android:entries="@array/sort_names"
		android:entryValues="@array/sort_clauses"
		android:dialogTitle="Choose a sort order" />
</PreferenceScreen>

整个界面是一个PreferenceScreen,第二行,是一个ListPreference,key就相当于id,也是键值对的key,实际存储之后就是一个键值对的键,在前面的initList里面

model=helper.getAll(where, prefs.getString("sort_order", "name"));

我们就是用prefs.getString(“sort_order”,”name”);去获取内容的,很明显这里用到的就是key,

title就是ListPreference的标题,summary是简单说明用法,效果如下,显示位置很明显就体会到其用途了.

再有就是所显示的具体内容了,ListPreference里的选项是从哪里来的呢,来自

android:entries=”@array/sort_names”

这个数组定义了要显示的内容,而下一行

android:entryValues=”@array/sort_clauses”

这行定义了对应着你所选的选项,存储到SharedPreferences里面的内容,整个数组的资源代码如下

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<string-array name="sort_names">
		<item>By Name, Ascending</item>
		<item>By Name, Descending</item>
		<item>By Type</item>
		<item>By Address, Ascending</item>
		<item>By Address, Descending</item>
	</string-array>
	<string-array name="sort_clauses">
		<item>name ASC</item>
		<item>name DESC</item>
		<item>type, name ASC</item>
		<item>address ASC</item>
		<item>address DESC</item>
	</string-array>
</resources>

比如我们在选择时,选择了第一个By Name, Ascending,那么系统自动帮你把name ASC存储到SharedPreferences里面,即

所存储的这条SharedPreferences为(SharedPreferences的存储方式就是xml文件的形式存储)

<string name=”sort_order”>name ASC</string>

那么在看前面的这行代码

model=helper.getAll(where, prefs.getString("sort_order", "name"));

很明显,这个prefs所获取到的内容就是”name ASC”,这行代码其实就是把参数传递到数据库帮助类里用来获取内容,而这个获取到的SharedPreferences就是设置的排序方式

android之知识点小结二[通俗易懂]android之知识点小结二[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121415.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java文件转码工具-native2ascii.exe命令简介

    java文件转码工具-native2ascii.exe命令简介native2ascii.exe简介java的转码工具,需要java.dll动态库和相关程序才能执行。native2ascii.exe是Java的一个文件转码工具,是将特殊各异的内容转为用指定的编码标准文体形式统一的表现出来,它通常位于JDK_home\bin目录下,安装好JavaSE后,可在命令行直接使用native2ascii命令进行转码。JDK自带的工具native2ascii可以将uncode编码的文件转换为本地编码的文件,但是不能批量转换文件。native2ascii.

    2025年9月4日
    6
  • 教师职称考计算机模块,2015年教师职称计算机考试模块「建议收藏」

    教师职称考计算机模块,2015年教师职称计算机考试模块「建议收藏」【职考宝典】为广大考生归纳2015年职称计算机考试模块,让考生提前进入考试氛围,了解考试题型,职考宝典涵盖面积广,模拟题库包含Internet应用,word2003、2007,winXP、wpsoffice、excel2003、2007,ppt2003、2007等。2015年教师职称计算机考试模块【职考宝典】为广大考生归纳2015年职称计算机考试模块,让考生提前进入考试氛围,了解考试题型,职考…

    2022年6月2日
    31
  • 《剑指offer》– 斐波那契数列、跳台阶问题 、变态跳台阶问题、矩阵覆盖

    《剑指offer》– 斐波那契数列、跳台阶问题 、变态跳台阶问题、矩阵覆盖

    2021年9月26日
    66
  • poe交换机百度百科_交换机带poe什么意思

    poe交换机百度百科_交换机带poe什么意思文章目录前言一、POE交换机与普通交换机的区别二、POE系统的组成三、POE交换机输出电压和功率四、POE系统的四种连接方法五、POE交换机供电距离六、提示1.网线2.不选非标POE3.不用假POE终端设备前言POE(PowerOverEthernet)指的是在现有的以太网Cat.5布线基础架构不作任何改动的情况下,在为一些基于IP的终端(如IP电话机、无线局域网接入点AP、网络摄像机等)传输数据信号的同时,还能为此类设备提供直流电的技术,就是支持以太网供电的交换机。提示:以下是本篇文章正

    2022年10月4日
    3
  • ZPL指令_TSC指令

    ZPL指令_TSC指令^CC,~CC改变格式指令前缀  ^CC,~CC(改变脱字符)指令是用于改变指令前缀。缺省前缀是脱字符(^)。^CC,~CC指令格式  ^CCx,~CCx^CC,~CC=改变脱字符x=任何ASCII字符  缺省值:要求有参数。如不用参数,下一字符接收后作为新的前缀字符。

    2025年7月27日
    4
  • javascript 防止重复提交

    javascript 防止重复提交

    2021年7月22日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号