Android之PreferenceFragment的使用:
2016-01-27 23:27
447 查看
当我们在开发项目的时候,经常需要使用到选项设置。设置由用户选定,并通过Preference保存。Android提供了这样一个便捷的基类PreferenceFragment。
简单步骤:
1.创建xml文件
PreferenceScreen为根标签,ListPreference为子标签。ListPreference的常见属性如下:android:key 唯一标识符,和android:id相类似,可以以其为参数通过findPreference获取指定的preference 。 注意,这个android:key的值也是Preference文件里面的XML“键“名 。
android:title 大标题
android:summary 标题下面的小字(这个要作为选项卡才有)
android:entries 弹出的对话框中,列表显示的文本内容,需要指定的是一个数组。
android:entryValues 与android:entries相对应的值
android:defaultValue 当对应值不存在时的默认值
android:dialogTitle 弹出的对话框中的标题信息
注意点:
android:entries和android:entryValues数组的创建:
在values文件夹中创建:
2.PreferenceFragment
新建MyPreferenceFragment,继承于PreferenceFragment,并加载选项设置的布局文件:
在MainActivity.java中加载上面的Fragment:
3.监听事件onPreferenceTreeClick()方法:
当任何一个preference控件被点击,都将触发该方法。但是可以通过preference.getKey()这个方法找到具体是哪个preference被点击了,因为每个preference的key都是唯一的。
简单步骤:
1.创建xml文件
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:summary="firstsummary" android:title="firstlist" > <CheckBoxPreference android:key="checkbox" android:summaryOff="已经关闭" android:summaryOn="已经开启" android:title="是否开启" /> <ListPreference android:entries="@array/entries" android:entryValues="@array/values" android:key="list" android:summary="请点击选择" android:title="选择一个选项" /> <EditTextPreference android:dialogMessage="有劳了" android:dialogTitle="请输入你的名字" android:key="text" android:summary="请在此输入" android:title="请输入" /> </PreferenceCategory> <PreferenceScreen android:summary="lalala" android:title="secondlist" > <EditTextPreference android:dialogMessage="请在下面输入" android:dialogTitle="请输入你的名字" android:key="text" android:summary="请在此输入" android:title="请输入" /> </PreferenceScreen> </PreferenceScreen>
PreferenceScreen为根标签,ListPreference为子标签。ListPreference的常见属性如下:android:key 唯一标识符,和android:id相类似,可以以其为参数通过findPreference获取指定的preference 。 注意,这个android:key的值也是Preference文件里面的XML“键“名 。
android:title 大标题
android:summary 标题下面的小字(这个要作为选项卡才有)
android:entries 弹出的对话框中,列表显示的文本内容,需要指定的是一个数组。
android:entryValues 与android:entries相对应的值
android:defaultValue 当对应值不存在时的默认值
android:dialogTitle 弹出的对话框中的标题信息
注意点:
android:entries和android:entryValues数组的创建:
在values文件夹中创建:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="entries"> <item>Java</item> <item>Swift</item> <item>C#</item> </string-array> <string-array name="values"> <item>Eclipse</item> <item>Xcode</item> <item>Visual Studio</item> </string-array> </resources>
2.PreferenceFragment
新建MyPreferenceFragment,继承于PreferenceFragment,并加载选项设置的布局文件:
public class MyPreferenceFragment extends PreferenceFragment { private CheckBoxPreference checkBoxPreference; private EditTextPreference editTextPreference; private ListPreference listPreference; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.myperference); checkBoxPreference = (CheckBoxPreference) findPreference("checkbox"); editTextPreference = (EditTextPreference) findPreference("text"); listPreference = (ListPreference) findPreference("list"); } }
在MainActivity.java中加载上面的Fragment:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se 4000 tContentView(R.layout.activity_main);‘ FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); MyPreferenceFragment fragment = new MyPreferenceFragment(); transaction.add(R.id.container, fragment); transaction.commit(); } }
3.监听事件onPreferenceTreeClick()方法:
@Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { // TODO Auto-generated method stub if ("checkbox".equals(preference.getKey())) { Log.i("checkbox", "lalalal"); } return super.onPreferenceTreeClick(preferenceScreen, preference); }
当任何一个preference控件被点击,都将触发该方法。但是可以通过preference.getKey()这个方法找到具体是哪个preference被点击了,因为每个preference的key都是唯一的。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories