android的Setting往往用PreferenceActivity来写的

我们在建立layout文件:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="常规设置" android:key="set_local">
<CheckBoxPreference
android:key="new_message_notify"
android:title="新消息通知"
android:defaultValue="true"
android:summary="收到新消息时是否须要通知" /> <RingtonePreference
android:layout="?android:attr/preferenceLayoutChild"
android:dependency="new_message_notify"
android:key="account_ringtone"
android:title="铃声"
android:ringtoneType="notification"
android:defaultValue="content://settings/system/notification_sound" /> <CheckBoxPreference
android:layout="?android:attr/preferenceLayoutChild"
android:dependency="new_message_notify"
android:key="account_vibrate"
android:defaultValue="false"
android:title="振动"/>
</PreferenceCategory>
<PreferenceCategory android:title="个人设置" android:key="personal_local">
<Preference android:key="clear_cache"
android:summary="点击将清理应用程序的缓存" android:title="清除缓存" defaultValue="false">
</Preference>
<CheckBoxPreference android:key="save_setting"
android:summary="下次开启记住个人设置" android:title="保存个人设置" android:defaultValue="true">
</CheckBoxPreference> <EditTextPreference
android:key="edit_text"
android:title="Edit" android:summary="EditTextPreference"
></EditTextPreference> <SwitchPreference
android:key="switch" android:summary="SwitchPreference"
></SwitchPreference> <ListPreference
android:key="list" android:summary="ListPreference" android:entries="@array/entry" android:entryValues="@array/entry_value" android:title="ListTitle"
></ListPreference> <MultiSelectListPreference
android:summary="MultiSelectListPreference" android:key="mutiSelect" android:entries="@array/entry" android:entryValues="@array/entry_value" android:title="mutiTitle"
/>
</PreferenceCategory>
</PreferenceScreen>

类的代码例如以下:

public class Settings extends PreferenceActivity {

	@Override
protected void onCreate(Bundle savedInstanceState) {
//这个是给Settings加自己定义Title
final boolean isCustom = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
super.onCreate(savedInstanceState);
if(isCustom){
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_list);
}
TextView title_text = (TextView)findViewById(R.id.title_text);
title_text.setText("Settings");
Button back = (Button)findViewById(R.id.back);
back.setVisibility(View.VISIBLE);
back.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
finish(); }
}); addPreferencesFromResource(R.xml.seting_preferences); } }

定义themes,把这个activity的theme设置成下面的样子

    <style name="AppTheme" parent="AppBaseTheme">  

        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
<!-- 避免反复设置标题 -->
<item name="android:windowActionBar">false</item>
<!-- 设置标题栏宽度 -->
<item name="android:windowTitleSize">60dp</item> //titlebar的高度
<!-- <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item> -->
</style>

取值的时候能够这样做:

SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(this);
String s = shp.getString("list", null); //这个是取ListPreference
TextView listData = (TextView)findViewById(R.id.listData);
listData.setText(s); HashSet set = (HashSet) shp.getStringSet("mutiSelect", null); //这个是取MultiSelectListPreference的值
Iterator<String> it = set.iterator();
String content = "";
while(it.hasNext()) {
content += it.next()+",";
}
TextView muti_select_data = (TextView)findViewById(R.id.muti_select_data);
muti_select_data.setText(content);

截图是:

关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)的更多相关文章

  1. Android之PreferenceActivity 详解

    看到很多书中都没有对PreferenceActivity做介绍,而我正好又在项目中用到,所以就把自己的使用的在这总结一下,也方便日后查找. PerferenceActivity是什么,看下面的截图: ...

  2. 自定义带有图片的PreferenceActivity

    http://my.oschina.net/huangsm/blog/40027 和大家分享一下关于android中PreferenceActivity使用以及为配置信息文件中添加图标的功能,首先给大 ...

  3. PreferenceActivity详解

    为了引入这个概率 首先从需求说起 即:现有某Activity专门用于手机属性设置 那么应该如何做呢? 根据已学知识 很快一个念头闪过 即:Activity + Preference 组合 前者用于界面 ...

  4. 从源码角度一步一步来修改PreferenceActivity界面

         PreferenceActivity给我们封装好了一个数据存储对象,我们只需要在xml文件中写上控件即可完成简单的设置界面.但是系统提供的设置界面十分的简陋,要想做的好看必须要自己来进行修改 ...

  5. android基础知识:SharedPreferences和PreferenceActivity

    1.android文件存储 对Android系统了解的都知道,Android系统有四种基本的数据保存方法,一是SharedPreference,二是文件,三是SQLite,四是ContentProvi ...

  6. 很全面的Android面试题

    Activity 什么是Activity 四大组件之一,一个和用户交的互界面就是一个activity,是所有 View 的容器 我开发常用的的有FragmentActivitiy,ListActivi ...

  7. 第三部分:Android 应用程序接口指南---第二节:UI---第五章 设置(Settings)

    第5章 设置(Settings) 应用程序通常包括允许用户修改应用程序的特性和行为的设置功能.例如,一些应用程序允许用户指定通知是否启用或指定多久使用云同步数据.如果你想要为你的应用程序提供设置,你应 ...

  8. 【起航计划 028】2015 起航计划 Android APIDemo的魔鬼步伐 27 App->Preferences->Launching preferences 其他activity获取Preference中的值

    前给例子介绍了如何使用PreferenceActivity 来显示修改应用偏好,用户对Preferences的修改自动存储在应用对应的Shared Preferences中. 本例介绍了如何从一个Ac ...

  9. 【转】 Pro Android学习笔记(五七):Preferences(1):ListPreference

    目录(?)[-] 例子1ListPreference小例子 定义一个preferences XML文件 继承PreferenceActivity 用户定制偏好的读取 第一次运行时设置缺省值 设置Cat ...

随机推荐

  1. Cocoapod安装 - 管理第三方库

    在我们开发移动应用的时候,一般都会使用到第三方工具,而由于第三方类库的种类繁多,我们在项目中进行管理也会相对麻烦,所以此时我们就需要一个包管理工具,在iOS开发中,我们使用最多的就是Cocoapods ...

  2. MyEclipse过期激活方法

    如果已经过期会提示,进行购买.重新激活和退出,我们选择重新激活. 打开浏览器,地址栏输入key.858game.com,然后输入名称,在线获得MyEclipse的激活码. 输入Sumscripter: ...

  3. 【HDU 3435】 A new Graph Game (KM|费用流)

    A new Graph Game Problem Description An undirected graph is a graph in which the nodes are connected ...

  4. Buying Feed, 2010 Nov (单调队列优化DP)

    约翰开车回家,又准备顺路买点饲料了(咦?为啥要说"又"字?)回家的路程一共有 E 公里,这一路上会经过 K 家商店,第 i 家店里有 Fi 吨饲料,售价为每吨 Ci 元.约翰打算买 ...

  5. SQLite 对中文路径的支持(用到了StringToWideChar和Utf8Encode在D7的System单元中自带)

    最近用SQLITE作为数据库,发现,如果直接传递带中文路径或文件名的数据库,会导致无法打开数据库的情况.看了一下SQLITE的源码,才发现,原来SQLITE中是用UTF8编码进行文件打开操作的. 所以 ...

  6. 使用IRP进行文件操作

    使用IRP进行文件操作 首先声明这个是菜鸟—我的学习日记,不是什么高深文章,高手们慎看. 一定要先感谢为技术的进步而付出辛勤汗水的人,感谢他们对技术的共享. 一个通用IRP访问文件的十六进制编辑器(开 ...

  7. 《ruby编程语言》笔记2 对象

    ruby是一门非常纯粹的面向对象的语言:所有值都是对象,而且没有基本类型(primitive type)和对象类型的区别,这一点不同于其他语言.在Ruby中,所有对象都继承一个Object类,而且共享 ...

  8. Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释

    本文大部分参考自 http://blog.csdn.net/mayingcai1987/article/details/6200909 ,对原文中的讲解FLAG_NEW_TASK地方加了一些自己的观点 ...

  9. String 类;Math 类;

    static void Main(string[] args)        {            while (true)            {               /* strin ...

  10. Android 网络通信框架Volley简介(Google IO 2013)

    1. 什么是Volley 在这之前,我们在程序中需要和网络通信的时候,大体使用的东西莫过于AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient( ...