【转】 Pro Android学习笔记(六三):Preferences(7):代码控制首选项 - blongfree

blongfree 2021-08-01 原文


【转】 Pro Android学习笔记(六三):Preferences(7):代码控制首选项

[-]

  1. 代码实现preference
  2. 利用preference保存状态
  3. DialogPreference

代码实现preference

View可以不通过xml进行设置,有代码直接进行设置,首选项preference也一样。下面是代码设置list preference的例子,是在通过header来指向PreferenceFragment的类,在PreferenceActivity中的实现也是类似的。

public class ListPreferenceFragment extends PreferenceFragment {  
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState); 
        addPreferencesFromResource(R.xml.fightoptions);  
        // 通过key来获得prefrenence 
        ListPreference listpref = (ListPreference) findPreference(“selected_flight_sort_option”);
        listpref.setEntries(new String[]{“Entry 1″,”Entry 2″,”Entry 3”});
        listpref.setEntryValues(new String[]{“0″,”1″,”2”}); 
    } 
}

如果需要从创建PreferenceScreen开始,下面是例子:

public class ListPreferenceFragment extends PreferenceFragment {
   @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        //创建PreferenceScreen 
        PreferenceScreen screen = getPreferenceManager().createPreferenceScreen( getActivity() );
        //创建PreferenceCategory,并加入preference screen 
        PreferenceCategory inlinePrefCat = new PreferenceCategory(getActivity());

        inlinePrefCat.setTitle(“Hello”); 
        screen.addPreference(inlinePrefCat); 
        //创建List preference,并加入preference category
        ListPreference listpref = new ListPreference(getActivity());
 
        listpref.setKey(“my_list_pref”); 
        listpref.setTitle(“Code For list preference”); 
        listpref.setSummary(“完全用代码编写的首选项测试”); 
        listpref.setEntries(new String[]{“Entry 1″,”Entry 2″,”Entry 3”}); 
        listpref.setEntryValues(new String[]{“0″,”1″,”2”});  
        screen.addPreference(listpref); 
        // 将preference screen加入 preference fragment中
        setPreferenceScreen(screen);
 
    }  
}

利用preference保存状态

Preference的信息在设备中通过文件保存,我们可以利用这个特点来进行数据和状态的存贮,例如游戏的最高得分。下面的例子,利用preference存贮文件保存两个参数,“initialized”是boolean,表示应用是否第一次运行。“call_number”是个计数器,每次调用dataStore()方法就加一。

private final String INITIALIZER = “initialized”; 
private final String CALLNUM = “call_number”; 

private void dataStore(){  
   //等同于PreferenceManager.getDefaultSharedPreferences(this);或者通过getShearedPreferences(name,mode)来指定文件名,可以通过editor来写。除了MODE_PRIVATE外,还有MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE,这是用来创建preference是设置的权限。如果我们只限于本应用使用,可设置MODE_PRIVATE。
    SharedPreferences prefs = getPreferences(MODE_PRIVATE);  
    boolean hasPreferences = prefs.getBoolean(INITIALIZER, false); 
    int num = prefs.getInt(CALLNUM, 0); 
    if(hasPreferences){  
        Log.d(“PRO”,”We\’ve been called ” + num + ” times before. “); 
    }else{  
        Log.d(“PRO”,”First time ever being called.”); 
    } 
    //写入preference 
   Editor editor = prefs.edit();  
   editor.putBoolean(INITIALIZER, true);  
   num ++;  
   editor.putInt(CALLNUM, num); 
   editor.commit();  
//或者editor.apply(); 

DialogPreference

DialogPreference是EditTextPreference和ListPreference的基类,如果我们需要有自己的弹框效果,可以继承DialogPreference来自定制layout,点击触发处理,并在onDialogClose()中处理写preference文件。

本博文涉及的例子代码,可以在Pro Android学习:Preference(首选项)小例子中下载。

相关链接: 我的Android开发相关文章

发表于
2015-12-15 13:39 
blongfree 
阅读(185
评论(0
编辑 
收藏 
举报

 

版权声明:本文为blongfree原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/blongfree/p/5048031.html

【转】 Pro Android学习笔记(六三):Preferences(7):代码控制首选项 - blongfree的更多相关文章

  1. JAVA语言课堂测试试卷01学生信息管理系统 – Lhxxx

    JAVA语言课堂测试试卷01学生信息管理系统 1.源程序思路:将成绩录入、成绩修改、计算绩点、退出系统分别写成 […]...

  2. PHP开发环境搭建 – wslio

    PHP开发环境搭建 0.软件准备 软件介质:idea 2018版本、Wampserver 64位版本 1.给i […]...

  3. 介绍几套好用的线上HTML编辑器 – 灵感试验室

    介绍几套好用的线上HTML编辑器 线上HTML编辑器真的蛮重要的,尤其是在开发内容管理系统的时候,许多不熟悉H […]...

  4. 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API

    目录 1、导入Selenium库 2、创建浏览器对象 3、浏览器窗口大小设置 4、浏览器位置设置 5、请求访问 […]...

  5. 企业级 – tintindeng

    企业级 Part1 软件架构 “架构”是依据业务设计组件、模块、框架、类等不同粒度的单元将其组合的策略。没有理 […]...

  6. Python的问题解决: IOError: [Errno 32] Broken pipe – 会被淹死的鱼

    Python的问题解决: IOError: [Errno 32] Broken pipe 2014-10-18 […]...

  7. Java设计模式 – 单例模式(创建型模式)

    单例模式我在上学期看一些资料时候学习过,没想到这学期的软件体系结构就有设计模式学习,不过看似篇幅不大,介绍得比 […]...

  8. 阿里云CDN加速设置 – 曉笙通幽

    阿里云CDN加速设置 阿里云CDN加速配置   步骤一:开通CDN服务 单击立即开通,使用本人账号登录并开通C […]...

随机推荐

  1. nginx部署及简单优化

    研究nginx优化时反复安装清理nginx,为方便做了一个简单部署脚本,用的最新稳定版1.14.0,默认路径, […]...

  2. 装系统问题,BIOS显示不出硬盘解决方案

    ***# 原创作品,转载请注明出处,谢谢!@杨福星 http://blog.csdn.net/luckysta […]...

  3. 二、Spring Cloud之注册中心 Eureka

    前言 算是正式开始学习 spring cloud 的项目知识了,大概的知道Springcloud 是由众多的微 […]...

  4. IE新奇使用技巧

    将IE 背景的颜色变成蓝色   只要在IE 的地址栏中输入“about:Mozilla”(不加引号),就可以将 […]...

  5. 专业级的音频编辑软件

    DSP-Quattro Mac是OS平台出色的音频编辑工具,也是专业级的音频编辑软件,有了它你就可以在家制作自 […]...

  6. Metric Learning 度量学习

    1. 度量(Metric) 在数学中,一个度量(或距离函数)是一个定义集合中元素之间”距离R […]...

  7. 用python和karrigell做网站.第一篇

    从今天起,和大家一起学习用python/karrigell做网站. 对于能搜到这篇文章的兄弟,一定是对karr […]...

  8. 用C#实现的几种常用数据校验方法整理(CRC校验;LRC校验;BCC校验;累加和校验)

                CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领 […]...

展开目录

目录导航