PreferenceActivity的使用 程序动态添加修改Preference
2017-12-18 17:43
351 查看
PreferenceActivity的XML中主要有7种元素,分别是PreferenceScreen(根元素),CheckBoxPreference(CheckBox选项,如系统设置-无线网络里的飞行模式),EditTextPreference(弹出一个EditText),ListPreference(弹出一个选择列表),Preference(只显示文本,需要在代码中添加点击事件),PreferenceCategory(分组标题栏),RingtonePreference(铃声设置)。
下面写个小例子:
添加类型为Preference的xml文件,内容如下:
<?xml
version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="播放设置">
<ListPreference
android:title="播放服务器" android:summary="设置默认播放服务器,默认为1号服务器" android:entries="@array/server"
android:entryValues="@array/server"
android:dialogTitle="选择播放服务器"
android:key="server_list">
</ListPreference>
<ListPreference
android:title="播放模式" android:summary="模式1不支持MoboPlayer" android:entries="@array/play_mode" android:entryValues="@array/mode_value"
android:dialogTitle="选择播放服务器"
android:key="play_mode">
</ListPreference>
<ListPreference
android:title="播放器" android:summary="设置默认播放器" android:dialogTitle="选择已安装播放器" android:key="player">
</ListPreference>
</PreferenceCategory>
<PreferenceCategory
android:title="帮助">
<Preference
android:title="查看帮助" android:summary="如果您有问题,请先查看帮助" android:key="help" />
</PreferenceCategory>
<PreferenceCategory
android:title="反馈">
<Preference
android:title="用户反馈" android:summary="您对我们有什么意见,可以联系我们" android:key="feedback" />
</PreferenceCategory>
</PreferenceScreen>
android:title即大号字体显示的标题,android:summary即短描述,android:key即保存该值的key,对ListPreference而言,还有android:entries,android:entryValues分别是显示的列表数据,和保存的值。
其中第三个ListPreference并没有设置android:entries,android:entryValues,我们将在Java代码中设置。
public
class Setting extends PreferenceActivity {
Dialog
dialog;
@Override
protected
void onCreate(Bundle savedInstanceState) {
//
TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
dialog=new
Dialog(this);
//自己写的用于执行相应操作的类
ListPreference
pre=(ListPreference)findPreference("player");
pre.setEntries(new
CharSequence[]{"Moboplayer","Vplayer","RockPlayer"});
pre.setEntryValues(new CharSequence[]{"0","1","2"});
//动态设置ListPreference
}
@Override
public
boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
//
TODO Auto-generated method stub
String
key=preference.getKey();
//根据被点击项的key执行相应操作
if(key.equals("help"))
{
dialog.showHelp();
}
if(key.equals("feedback"))
{
dialog.feedBack();
}
return
super.onPreferenceTreeClick(preferenceScreen, preference);
}
}
下面写个小例子:
添加类型为Preference的xml文件,内容如下:
<?xml
version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="播放设置">
<ListPreference
android:title="播放服务器" android:summary="设置默认播放服务器,默认为1号服务器" android:entries="@array/server"
android:entryValues="@array/server"
android:dialogTitle="选择播放服务器"
android:key="server_list">
</ListPreference>
<ListPreference
android:title="播放模式" android:summary="模式1不支持MoboPlayer" android:entries="@array/play_mode" android:entryValues="@array/mode_value"
android:dialogTitle="选择播放服务器"
android:key="play_mode">
</ListPreference>
<ListPreference
android:title="播放器" android:summary="设置默认播放器" android:dialogTitle="选择已安装播放器" android:key="player">
</ListPreference>
</PreferenceCategory>
<PreferenceCategory
android:title="帮助">
<Preference
android:title="查看帮助" android:summary="如果您有问题,请先查看帮助" android:key="help" />
</PreferenceCategory>
<PreferenceCategory
android:title="反馈">
<Preference
android:title="用户反馈" android:summary="您对我们有什么意见,可以联系我们" android:key="feedback" />
</PreferenceCategory>
</PreferenceScreen>
android:title即大号字体显示的标题,android:summary即短描述,android:key即保存该值的key,对ListPreference而言,还有android:entries,android:entryValues分别是显示的列表数据,和保存的值。
其中第三个ListPreference并没有设置android:entries,android:entryValues,我们将在Java代码中设置。
public
class Setting extends PreferenceActivity {
Dialog
dialog;
@Override
protected
void onCreate(Bundle savedInstanceState) {
//
TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
dialog=new
Dialog(this);
//自己写的用于执行相应操作的类
ListPreference
pre=(ListPreference)findPreference("player");
pre.setEntries(new
CharSequence[]{"Moboplayer","Vplayer","RockPlayer"});
pre.setEntryValues(new CharSequence[]{"0","1","2"});
//动态设置ListPreference
}
@Override
public
boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
//
TODO Auto-generated method stub
String
key=preference.getKey();
//根据被点击项的key执行相应操作
if(key.equals("help"))
{
dialog.showHelp();
}
if(key.equals("feedback"))
{
dialog.feedBack();
}
return
super.onPreferenceTreeClick(preferenceScreen, preference);
}
}
相关文章推荐
- 使用jQuery的.on()为程序动态添加的代码添加事件
- 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)
- 使用Quartz进行动态添加、修改和删除Job的工具类
- c# winform程序调用托管dll(c#的dll),使用"添加引用"和动态加载dll
- 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)
- ASP.NET程序中动态修改web.config中的设置项目(后台CS代码)
- 用Nhibernate怎么实现数据的添加、删除、修改简单程序
- VB6.0动态添加、修改、删除ODBC的DSN
- 开始学习使用写日志的方式来记录写程序做过的修改
- DataGrid的使用入门(添加、删除和修改操作)
- webgrid的使用:(二)、动态的添加webcombo到webgrid上的操作
- 动态修改/添加CSS文件链接
- 怎样给没有源代码的.net程序添加修改功能
- 程序中添加动态用户密码
- 用Nhibernate怎么实现数据的添加、删除、修改简单程序
- 连接MySQL并提供查询,删除,修改和添加的java程序
- 使用程序修改域帐户直接领导时遇到的错误
- 使用程序修改域帐户直接领导时遇到的错误
- 怎样给没有源代码的.net程序添加修改功能
- 用Nhibernate怎么实现数据的添加、删除、修改简单程序