关闭

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

4818人阅读 评论(1) 收藏 举报
分类:

代码实现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开发相关文章

0
0
查看评论

SetEntries()的使用(转)

<br />What Are Palettes? <br />基于调色板的页面需要调色板才能真正有意义的显示出来.一个基于调色板的页面,通常也被称作一个"色彩索引"页面,仅仅是一些数字的集合,其中的每一个数字代表一个像素.每一个数字的值都对应于一个色彩表(...
  • ljq550000
  • ljq550000
  • 2010-08-12 21:37
  • 1304

Android中类ListPreference使用介绍

类ListPreference
  • weicaihui2008
  • weicaihui2008
  • 2015-12-23 10:00
  • 921

Android 存储首选项SharedPreferences

Android中使用SharedPreferences存储比较少的配置信息(例如:记住密码、自动登录..) SharedPreferences使用的基本步骤: 声明SharedPreferences接口 声明Editor对象 SharedPreferences对象初始化、Editor对象初始化 E...
  • MAGIC_JSS
  • MAGIC_JSS
  • 2016-10-06 17:37
  • 1786

Android基础--首选项(SharedPreferences)

首选项就是存储软件的配置信息。      在window系统中是以 ini为后缀,然而在android中就是以 xml为后缀。       这次讲首选项以编写一个登入之后记住密码为例。  布局:activity_ma...
  • ITqingliang
  • ITqingliang
  • 2017-03-16 20:04
  • 411

Map集合中value()方法与keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。 keySet():迭代后只能通过get()取key...
  • liu826710
  • liu826710
  • 2013-05-31 16:32
  • 47902

Android成长之路(6)——数据持久化处理

保存key-value对——SharedPreferences 如果有比较小的数据是key-value的关系,这些数据需要储存,那么就可以用到ShardPreferences。一个SharedPreferences对象指向一个包含key-value对的文件,它提供一些简单的方法读和写。每个Shar...
  • qq_24850089
  • qq_24850089
  • 2016-05-15 01:04
  • 5271

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

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

DACL(自由访问控制列表)详解

DACL(自由访问控制列表)详解
  • kaylc
  • kaylc
  • 2011-02-09 15:52
  • 7387

Java首选项Preferences

对一款人性化的应用来说,往往需要存储用户的偏好设置,例如字体大小、应用风格等个性化的设置数据。Java应用具有跨平台的特性,就更需要一种平台无关的存储手段。Java官方给出的解决方案是Preferences首选项,本文就来简单讲解一下Preferences的使用。
  • CodingEnding
  • CodingEnding
  • 2017-05-20 16:13
  • 520

OSX下代码打开系统首选项(system preferences)

使用NSTask来完成特殊的功能,通过setLaunchPath设置要执行的路径(启动哪个app或执行的命令),通过setArguments设置参数,设置的参数会传入给启动的那个app,最后通过launch来执行命令。
  • SkyNullCode
  • SkyNullCode
  • 2015-12-10 18:36
  • 1129
    个人资料
    • 访问:4901817次
    • 积分:55243
    • 等级:
    • 排名:第59名
    • 原创:780篇
    • 转载:23篇
    • 译文:237篇
    • 评论:1535条
    博客专栏
    我的公告
    我思故我在,如果一个人无法独立思考,即使熟习各种工具,实质只是工具的一部分,永远无法创造工具。
    文章转载只能用于非商业性质,且不能带有虚拟货币、积分等附加条件;转载必须注明出处。

    我的微博帐号:@恺风Wei
    文章存档