热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux系统首选项,Android之首选项相关Preferences(一)

最近学习Android时发现,很多书上都介绍了preference首选项这个东西,但是大部分的书都是直接上来讲怎么用,对其的用途和来历都是

最近学习Android时发现,很多书上都介绍了preference首选项这个东西,但是大部分的书都是直接上来讲怎么用,对其的用途和来历都是只字不提,笔者本人对于这种做法是非常鄙视的。

这里,我将对其进行一点简单的描述,可能说法并不严谨,但是至少能帮助你理解到底什么事首选项:

首选项这个词是preference翻译过来的,至于它到底是什么,我用一句话概括下:preference是一种android为我们提供的方便的对数据进行存储的工具。

分析这句话:

首先,我们明确,preference是和数据存储相关的。

其次,它能帮助我们方便的进行数据存储!为什么这个地方一定要强调下方便的这个词呢?原因是,我们可以根本就不使用,我们有另外的N种办法可以实现同样的功能!它的出现,相当于为我们提供了一个方便的工具,当然了,这个工具并不是必须的。

preference都应用在什么场景呢?

这得从android对preference的实现说起,实际上,preference所存储的数据最后都会以xml文件格式的形式进行保存,而且其只能保存一些基本格式的数据。例如string/boolean……。该xml文件存放的位置在data/data/你应用的包名/shared_prefs文件夹下。

种种的限制与实现机制表明了,preference非常适合于参数设置功能。实际上,它也确实是干这个的,我们通过使用preference可以迅速的将某些值保存进xml文件中,然后我们可以读取这些设置信息进行相应的操作。

为了简化与preference相关的应用开发,android为我们提供了一系列的api来帮助我们。主要有PreferenceActivity,ListPreference,EditTextPreference,CheckBoxPreference,RingtonePreference

下面我们简单的介绍下ListPreference的用法:

最终效果图:

062a9f063c679f0440f014542369a180.gif

当我们点击该选项时,会弹出这样一个选择页面。

02f9f8fa7fdacb6473d4193ac4b8484e.gif

我们选择了山东,然后该页面就会自动关闭,并且和山东所对应的值也已经写入了后台的xml文件中。

activity代码:

packagecn.com.chenzheng_java.pref;

importandroid.os.Bundle;

importandroid.preference.ListPreference;

importandroid.preference.PreferenceActivity;

importandroid.preference.PreferenceManager;

importandroid.util.Log;

/**

* @description 有关首选项preferences的研究

* @author chenzheng_java

* @since 2011/03/29

* 继承了PreferenceActivity我们可以方便的对preference进行操作。

* 例如可以通过getPreferenceManager获取首选项管理器

* 那,我们可不可以不继承PreferenceActivity呢?当然可以,你还记得不记得,实际上Activity类中

* 就有个SharedPreferences getSharedPreferences(String name, int mode)方法呢,我们通过它

* 也可以对preference进行操作。当然了,如果我们不继承PreferenceActivity的话,那么我们就要手动的

* 对数据进行保存了。而不是跟现在一样,会自动的根据你的选择项进行数据保存。

* 那么,preference在这里是怎么样进行自动保存的呢,答案很简单,那就是在addPreferencesFromResource方法的具体实现中!

*/

publicclassMyPreferencesActivityextendsPreferenceActivity {

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.mylistpreference);

/**

* getPreferenceManager返回首选项管理器对象

*/

PreferenceManager manager = getPreferenceManager();

// 根据android:key中指定的名称(相当于id)来获取首选项

ListPreference listPreference = (ListPreference) manager.findPreference("myListPreference");

Log.i("存储的值为",""+listPreference.getValue());

}

}

res/xml/mylistperference.xml布局文件

xmlns:android="http://schemas.android.com/apk/res/android"

android:key="screen_list"

android:title="标题"

android:summary="说明摘要"

>

android:key="myListPreference"

android:title="标题"

android:summary="说明摘要"

android:entries="@array/list_entries"

android:entryValues="@array/list_entries_value"

android:dialogTitle="dialogTitle"

android:defaultValue="@array/list_entries_value2"

>

res/values/arrays.xml为我们的list提供了初始化数据哦

山东

福建

北京

河北

shandong1

fujian1

beijing1

hebei1

shandong2

fujian2

beijing2

hebei2

当我们运行,并选择了福建时,我们可以查看在shared_prefes下的xml文件如下:

fujian1

我们可以看到,myListPreference就是我们指定的那个android:key的值,而fujian1就是我们在arrays中定义的某个值!0b1331709591d260c1c78e86d0c51c18.png



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
superC201114_155
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有