您的位置:首页 > Web前端

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);
 }
 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: