Android中PreferenceActivity的介绍

来源:互联网 发布:three.js pointlight 编辑:程序博客网 时间:2024/05/14 09:53
 在Android中的APIdemos是中经常遇到过继承于PreferenceActivity这个类,紧接着就是addPreferencesFromResource(R.xml.*******);(附:这个******就是一个XML文件,以Preference_dependencies为例),现在我们进这个XML文件看下发现:
  1. <PreferenceScreen
  2.         xmlns:android="http://schemas.android.com/apk/res/android">

  3.     <PreferenceCategory
  4.             android:title="@string/example_preference_dependency">
  5.             
  6.         <CheckBoxPreference
  7.                 android:key="wifi"
  8.                 android:title="@string/title_wifi" />
  9.             
  10.         <EditTextPreference
  11.                 android:layout="?android:attr/preferenceLayoutChild"
  12.                 android:title="@string/title_wifi_settings"
  13.                 android:dependency="wifi" />
  14.             
  15.     </PreferenceCategory>
  16.                 
  17. </PreferenceScreen>

PreferencrScreen这里我是理解为一个窗口(可能是做展讯的缘故),下面都是他的组建,即构成了一个与用户的交互界面(将会以一个完整的页面显示),这个XML文件主要可以分为两类:一类是管理布局的显示,如PreferenceScreen;另一类是具体的设置内容,如CheckBoxPreference,EditTextPrefrencr。

在上面的程序还发现有PreferenceCategory这个属性,这个主要的作用我是认为将他里面涵盖的东西作为他的一个属性。附其他的属性介绍:Key为这个PreferenceID,设置了才可以在代码中引用,Title是显示的标题,Summary是显示在标题下的文字介绍。效果如下所示:

 上面我们介绍了PreferenceActivity设置界面。当PreferenceActivity中的内容改变时,Android系统会自动进行保存和持久化维护,我们只需要在要用的设置界面中数据的地方进行读取就可以了。同时Android还提供了OnPreferenceClickListener和OnPreferenceChangeListener两个与Preference相关的监听接口,当PreferenceActivity中的某一个Preference进行了点击或者改变的操作时,都会回调接口中的函数,这样可以第一个时间向其他Activity等通知系统设置进行了改变。

还有一种方法通过setPreferenceScreen(PreferenceScreen),通过自己写的方法也可以实现上述操作;

  1. public class PreferencesFromCode extends PreferenceActivity {

  2.     @Override
  3.     protected void onCreate(Bundle savedInstanceState) {
  4.         super.onCreate(savedInstanceState);
  5.         
  6.         setPreferenceScreen(createPreferenceHierarchy());
  7.     }

  8.     private PreferenceScreen createPreferenceHierarchy() {
  9.         // Root
  10.         PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
  11.         
  12.         // Inline preferences
  13.         PreferenceCategory inlinePrefCat = new PreferenceCategory(this);
  14.         inlinePrefCat.setTitle(R.string.inline_preferences);
  15.         root.addPreference(inlinePrefCat);
  16.         
  17.         // Toggle preference
  18.         CheckBoxPreference togglePref = new CheckBoxPreference(this);
  19.         togglePref.setKey("toggle_preference");
  20.         togglePref.setTitle(R.string.title_toggle_preference);
  21.         togglePref.setSummary(R.string.summary_toggle_preference);
  22.         inlinePrefCat.addPreference(togglePref);
  23.                 
  24.         // Dialog based preferences
  25.         PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this);
  26.         dialogBasedPrefCat.setTitle(R.string.dialog_based_preferences);
  27.         root.addPreference(dialogBasedPrefCat);

  28.         // Edit text preference
  29.         EditTextPreference editTextPref = new EditTextPreference(this);
  30.         editTextPref.setDialogTitle(R.string.dialog_title_edittext_preference);
  31.         editTextPref.setKey("edittext_preference");
  32.         editTextPref.setTitle(R.string.title_edittext_preference);
  33.         editTextPref.setSummary(R.string.summary_edittext_preference);
  34.         dialogBasedPrefCat.addPreference(editTextPref);
  35.         
  36.         // List preference
  37.         ListPreference listPref = new ListPreference(this);
  38.         listPref.setEntries(R.array.entries_list_preference);
  39.         listPref.setEntryValues(R.array.entryvalues_list_preference);
  40.         listPref.setDialogTitle(R.string.dialog_title_list_preference);
  41.         listPref.setKey("list_preference");
  42.         listPref.setTitle(R.string.title_list_preference);
  43.         listPref.setSummary(R.string.summary_list_preference);
  44.         dialogBasedPrefCat.addPreference(listPref);
  45.           return root
          }
 }

效果如图:

阅读(1284) | 评论(0) | 转发(0) |
0

上一篇:android中关于消息Message与Handler的详解

下一篇:关于android中BaseAdapter的理解

相关热门文章
  • 都是免费推广网店,新手上路必...
  • 土豪seo人员不能不知的高级搜...
  • 公司发展历史(1925-1934)精彩...
  • Android系统匿名共享内存Ashme...
  • 冠博银代理,冠博贵金属招商,...
  • linux守护进程的几个关键地方...
  • stagefright与opencore对比
  • 嵌入式Linux之我行——u-boot-...
  • 嵌入式Linux之我行——内核、...
  • CodeNavigator -- 程序员必备...
  • ChinaUnix & ITPUB社区12周年...
  • ssh连接出现以下提示,求解...
  • 如何扩展MYSQL
  • 准备做一个大型门户,用户什么...
  • gbk or utf8
给主人留下些什么吧!~~
原创粉丝点击