Android软件开发之PreferenceActivity中的组件


1.PreferenceActivity 介绍

PreferenceActivity 继承ListActivity 它是以一个列表的形式在展现内容,它最主要的特点是添加Preference可以让控件的状态持久化储存,举个例子 比如用户选中checkbox后 退出应用然后在进入应用,这时用户希望看到的是checkbox被选中,所以软件须要记录用户每次操作的过程并且持久储存,在进入应用的时候须要判断这些久储存的数据然后将系统控件的状态呈现在UI中。

尤其是软件开发肯定会有一堆设置选项选项,每次进入Activity都去手动的去取储存的数据,这样代码会变得很复杂很麻烦。 这个时候Preference就出来了,它就是专门解决这些特殊的选项保存与读取的显示。用户每次操作事件它会及时的以键值对的形式记录在SharedPreferences中,Activity每次启动它会自动帮我们完成数据的读取以及UI的显示。

Android开发中一共为我们提供了4个组件,分别是CheckBoxPreference组件、EditTextPreference组件、ListPreference组件、RingtonePreference组件,下面我用一个例子一一向同学们介绍一下。

2.CheckBoxPreference组件

CheckBoxPreference 选中为true 取消选中为false 它的值会以boolean的形式储存在SharedPreferences中。

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <PreferenceScreen  
  3.   xmlns:android="http://schemas.android.com/apk/res/android">  
  4.     <PreferenceCategory android:title="CheckBoxPreference">     
  5.     <CheckBoxPreference android:key="checkbox_0"  
  6.         android:title="CheckBox_A"  
  7.         android:summary="这是一个勾选框A" >  
  8.     </CheckBoxPreference>  
  9.       
  10.     <CheckBoxPreference android:key="checkbox_1"  
  11.         android:title="CheckBox_B"  
  12.         android:summary="这是一个勾选框B" >  
  13.     </CheckBoxPreference>  
  14.     </PreferenceCategory>  
  15. </PreferenceScreen>  

  1. import android.content.Context;  
  2. import android.os.Bundle;  
  3. import android.preference.CheckBoxPreference;  
  4. import android.preference.Preference;  
  5. import android.preference.PreferenceActivity;  
  6. import android.preference.Preference.OnPreferenceChangeListener;  
  7. import android.preference.Preference.OnPreferenceClickListener;  
  8. import android.widget.Toast;  
  9.   
  10. public class CheckBoxActivity extends PreferenceActivity {  
  11.   
  12.     Context mContext = null;  
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.     super.onCreate(savedInstanceState);  
  16.     // 从资源文件中添Preferences ,选择的值将会自动保存到SharePreferences   
  17.     addPreferencesFromResource(R.xml.checkbox);  
  18.       
  19.     mContext = this;  
  20.       
  21.     //CheckBoxPreference组件   
  22.     CheckBoxPreference mCheckbox0 = (CheckBoxPreference) findPreference("checkbox_0");  
  23.     mCheckbox0.setOnPreferenceClickListener(new OnPreferenceClickListener() {  
  24.           
  25.         @Override  
  26.         public boolean onPreferenceClick(Preference preference) {  
  27.         //这里可以监听到这个CheckBox 的点击事件   
  28.         return true;  
  29.         }  
  30.     });  
  31.       
  32.     mCheckbox0.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {  
  33.           
  34.         @Override  
  35.         public boolean onPreferenceChange(Preference arg0, Object newValue) {  
  36.         //这里可以监听到checkBox中值是否改变了   
  37.         //并且可以拿到新改变的值   
  38.           Toast.makeText(mContext, "checkBox_0改变的值为" +  (Boolean)newValue, Toast.LENGTH_LONG).show();    
  39.         return true;  
  40.         }  
  41.     });  
  42.   
  43.     CheckBoxPreference mCheckbox1 = (CheckBoxPreference) findPreference("checkbox_1");  
  44.     mCheckbox1.setOnPreferenceClickListener(new OnPreferenceClickListener() {  
  45.           
  46.         @Override  
  47.         public boolean onPreferenceClick(Preference preference) {  
  48.         //这里可以监听到这个CheckBox 的点击事件   
  49.         return true;  
  50.         }  
  51.     });  
  52.       
  53.     mCheckbox1.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {  
  54.           
  55.         @Override  
  56.         public boolean onPreferenceChange(Preference arg0, Object newValue) {  
  57.         //这里可以监听到checkBox中值是否改变了   
  58.         //并且可以拿到新改变的值   
  59.           Toast.makeText(mContext, "checkBox_1改变的值为" +  (Boolean)newValue, Toast.LENGTH_LONG).show();    
  60.         return true;  
  61.         }  
  62.     });  
  63.       
  64.     }  
  65.   
  66. }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 下一页

相关内容