`
iaiai
  • 浏览: 2204923 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android学习笔记 Preference的使用

 
阅读更多
Preference直译为偏好,博友建议翻译为首选项。一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依然有效,无须用户再一次进行配置或选择。Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据,并立时生效,同时Android提供一种类似的layout的方式来进行Prefernce的布局。

一个简单的Preferenece例子

步骤1:编写preference XML,在res/xml/下加入我们的preference XML文件,例如名字叫c21preference.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- preference的组织方式有PreferenceScreen和PreferenceCategory,PreferenceCategory是带层次组织关系,在后面的例子体验,而PreferenceScreen就是最平白和基础的方式 -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 有四个基本组建,这个例子学习两个。里面的内容对照图,很容易理解,RingtonePreference是选择铃音,这里给出两个选择,系统默认的铃音和无声 -->
    <CheckBoxPreference android:key="checkbox"
        android:title="CheckBox Preference"
        android:summary="Check it on , check it off"/>
    <RingtonePreference android:key="ringtone"
        android:title="Ringtone Preference"
        android:showDefault="true"
        android:showSilent="true"
        android:summary="Pick a tone, any tone"/>
</PreferenceScreen>


步骤2:在java源代码中调用该xml,生成相应的preference界面
public class Chapter21Test1 extendsPreferenceActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.c21preference);
    }
}

和用layout方式一样,代码很简单。和以往界面最大的区别是,我们对checkbox进行选择或者对ringtone进行选择后,这个选择结果是被保留的,当我们退出actitvity后再次进入,上次的选项依然保留,我们重新向模拟器load应用,发现之前的选项仍然存在。我们可以利用preference,而无须人工对数据进行保存和读取,很是方便。



步骤3:获取preference的数据

处了在preference的界面中可以保留数据,我们也希望能够读出数据,以便这些数据可以用在其他的activity中。如果另一个activity和这些数据关联,而且希望能够实时进行同步,在onResume()中对preference保留的数据进行读取,而后进行相关的更新。

首先要获取preferences,然后通过键值对的获取方式根据key获取数值,在xml中checkbox的key为“checkbox”,值的类型为布尔值,而rintong的值为String,例如:
protected void onResume() { //在另一个Activity中
        super.onResume();
        SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(this) ;
        System.out.println(new Boolean(prefs.getBoolean("checkbox",false)).toString());//false表示没有查到checkbox这个key的返回值
        System.out.println(prefs.getString("ringtone","<unset>"));//<unset>表示没有查到ringtong这个key的返回值
    }


获取preferences可以通过三种方式:
一、getPreferences():可以获取同一activity中的preference;
二、getSharedPreferences():可以获取映用级别的preferences(),在这个例子中由于我们封装在同一app中,也可以使用SharePreferences prefs = getSharedPreferences( "com.wei.android.learning_preferences" ,0);其中第一个参数name的格式是<package_name>_preferences;
三、getDefaultSharedPreferences():就是我们例子的方式,通过Android的偏好管理器来获取其所管理的preferences。

Preferenece数据的操作

在上面的例子中,preference的数值会被保留,而且可以在其他的activity中读取。如果需要清除数据,可以通过remove()清除某个名字的prefernece,clear()清除所有的preferences。我们可以通过edit()获取preferences的editor,进而进行编辑,修改后,通过commit()将修改值保存。

Preferenece XML

Preference的XML可以通过PreferenceCategory来进行组织。PreferenceCategory可以将几个组建组合在一起,并加上标题。我们依然用前面的xml例子,通过PreferenceCategory来进行组织,如下:和之前的例子比较,将chekcbox和rintong组织成为一个category,并加上了"simple Preferences"的标题。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
       <PreferenceCategory android:title="Simple Preferences">
            <CheckBoxPreference android:key="checkbox" ..../>
            <RingtonePreference android:key="ringtone" ... />
       </PreferenceCategory> 
</PreferenceScreen>


PreferenceCategory也可以嵌套PreferenceScreen,PreferenceScreen中的内容,将通过另一屏来显示,我们在上面例子后面添加一个嵌套了PreferenceScreen的PreferenceCategory。整个PreferenceScreen作为一个组件出现,点击后新的一屏,由入PreferenceScreen定义。通过这个关系,我们可以组织自己的preference架构。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
       <PreferenceCategory android:title="Simple Preferences">
            <CheckBoxPreference android:key="checkbox" ..../>
            <RingtonePreference android:key="ringtone" ... />
       </PreferenceCategory>
       <PreferenceCategory android:title="Detail Screens">
           <PreferenceScreen android:title="Detail"
               android:summary="Addtional preference help in another page">
               <CheckBoxPreference android:key="checkbox2"
                   android:title="Another Checkbox"
                   android:summary="On or Off, It's a problem...."/>
           </PreferenceScreen>
       </PreferenceCategory>
</PreferenceScreen>


在前面的例子中我们使用了CheckBox和Ringtong,在下面的例子,我们实验另外的两个组建EditText和List,这两种都是已弹框的方式。在上面的例子我们继续增加内容
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen ...>
       ......     
       <PreferenceCategory android:title="Other Preferences">
           <EditTextPreference android:key="text"
               android:title="Text Entry Dialog"
               android:summary="Click to pop up a field for entry"
               android:dialogTitle="Enter something useful"/>
           <ListPreference android:key="list"
               android:title="Selection Dialog"
               android:summary="Click to pop yo a list for select"
               android:entries="@array/cities"
               android:entryValues="@array/airport_codes"
               android:dialogTitle="Choose a City"/>
       </PreferenceCategory>
</PreferenceScreen>

在list中由两个引用@array/cities和@array/airport_codes,我们在资源文件中定义此两array。内容如下:
<resource>
     <string-array>
        <item>Pittsburgh</item>
        <item>Allentown/Bethlehem</item>
        <item>Erie</item>
        ... ... 
    </string-array>
    <string-array name="airport_codes">
        <item>PHL</item>
        <item>PIT</item>
        <item>ABE</item>
        ... ... 
    </string-array>
</resources>


运行结果如上图所示。对于EditText,键值对保存的值是String,即用户在输入框中输入的内容。List的情况稍微复杂一些,在设置ListPreference的属性有一个entires,这是在List显示给用户看的内容,如果我们去获取preference的值,在这个例子为prefs.getString("list", "<unset>");,则返回在entryValues对应的数值,例如我们选择了第一个item:Pittsburgh,则获取的值为PHL。entries和entryValues是一一对应的。

示例下载
  • 大小: 33.1 KB
  • 大小: 43.1 KB
  • 大小: 72.6 KB
  • 大小: 46 KB
  • 大小: 21.1 KB
  • 大小: 127.8 KB
分享到:
评论

相关推荐

    Android中Preference的使用以及监听事件分析

    总结,Preference是Android开发中的一个强大工具,通过它可以快速构建出美观且易于使用的设置界面。理解并熟练运用Preference的使用、监听事件以及数据持久化,能够极大地提高开发效率。通过自定义Preference,...

    android Preference自定义样式

    综上所述,自定义Android的Preference样式涉及到多个层次,包括使用主题、布局、视图、属性和代码动态修改。理解这些方法,开发者可以根据自己的需求为用户创造更加美观和个性化的设置界面。在实际项目中,应根据...

    Android学习笔记(四十):Preference的使用.doc

    在Android开发中,Preference是一个非常实用的组件,它用于管理用户的设置和偏好数据。当用户在应用中进行了一些选择,比如开关按钮的状态、铃声的选择等,这些设置通常需要被持久化存储,以便在下次打开应用时能够...

    Android中preference的使用实例代码

    本篇文章将深入探讨如何在Android项目中使用Preference,通过实例代码来展示其用法。 一、Preference概述 Preference是Android SDK中的一个类,位于`android.preference`包下,它为应用程序提供了用户设置界面的...

    Android 自定义preference组件

    上篇博文代码实现了Android自带的preference组件,本文将通过实例讲解自定义preference组件。 主要通过以下几步来实现: 1.定义需要的layout布局res-&gt;layout-&gt;xml文件; 2.通过继承Preference类,来实现自定义...

    Pro Android学习:Preference(首选项)小例子

    在这个“Pro Android学习:Preference(首选项)小例子”中,我们将深入探讨Preference的使用以及它在实际应用中的实现。 首先,Preference的使用始于XML布局文件。在Android资源目录下的res/xml中,开发者会创建一...

    安卓Android源码——Preference_Demo.rar

    Preference_Demo是一个基于Android平台的源码示例,主要展示了如何在Android应用中使用Preference组件。Preference类是Android SDK提供的一种用于创建用户设置界面的工具,它允许开发者以一种声明式的方式定义设置项...

    Android Preference组件使用

    Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据,并立时生效,同时Android提供一种类似的layout的方式来进行Preference的布局。 Preference组件有ListPreference,EditTextPreference,...

    Android应用Preference

    Preference,比如系统设置、短信都可以使用,简单而又好使用,而且Google原生Android代码中大量的使用了Preference组件。简单说, Preference组件其实就是Android常见UI组件与SharePreferences的组合封装实现。

    Android PreferenceActivity 学习笔记

    这篇学习笔记将深入探讨PreferenceActivity的使用方法、功能以及与源码相关的知识。 首先,PreferenceActivity是Android SDK提供的一种特殊类型的Activity,它允许开发者快速构建具有可配置选项的界面,类似于系统...

    android各种Preference的使用

    本篇文章将详细讲解如何在Android中使用各种类型的Preference,特别是ListPreference。 首先,我们来看一下ListPreference的使用。ListPreference在Android中用于创建一个下拉列表供用户选择。在Listing 11–1中...

    Android Preference解读

    在Android开发中,Preference是用于构建用户界面的一种重要组件,特别是在设置界面的实现上。它提供了许多预定义的UI元素,如开关按钮、选择列表、输入框等,使得开发者能够快速构建具有交互性的配置界面。本篇文章...

    Android应用源码之Preference_Demo-IT计算机-毕业设计.zip

    - 优秀的毕业设计还会考虑API兼容问题,可能使用`androidx.preference`库以支持低版本Android设备。 通过研究此项目的源码,开发者可以学习到如何构建可维护、可扩展的用户设置模块,这对于任何Android应用都是必...

    Pro Android学习:Preference(首选项)小例子 修改例子7

    恺风2013-12-04上传的Pro Android学习系列中preference部分的例子源代码; 测试第7个例子,大屏的盒子不能使用,做了一些修改,特此分享; 由于原作者有使用资源分,如果我免费的话会影响他的下载,所以我也加1分,...

    Android Preference Framework源码

    Android的Preference Framework是Android系统中用于构建设置界面的一个强大工具,它允许开发者通过XML定义各种偏好设置元素,如开关按钮、选择列表等,然后在应用中轻松地将这些设置集成到用户界面。这个框架大大...

    Android应用源码之Preference_Demo.zip项目安卓应用源码下载

    Android应用源码之Preference_Demo.zip项目安卓应用源码下载Android应用源码之Preference_Demo.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    android-support-v7-preference.jar

    android-support-v7-preference.jar

    android Preference的Demo

    本Demo旨在展示如何在Android应用中使用Preference来实现用户设置的保存与读取。 首先,我们需要在布局文件(通常是res/xml/preference.xml)中定义Preference视图。这个XML文件包含了各种Preference类型的节点,如...

    Android学霸学习笔记

    根据提供的文件内容,这是一份详细的Android学习笔记,涵盖了从基础入门到高级特性的各个知识点。以下是从这些内容中提取的知识点: 1. Android入门基础: - 建立第一个App:介绍如何创建Android项目和执行程序。 ...

Global site tag (gtag.js) - Google Analytics