Preference使用总结。注释:部分代码引用http://blog.csdn.net/qinjuning 单一控件: Preference// TextView 文本框 CheckPreference // CheckBox 单选框 EditTextPreference// EditText 输入文本框 ListPreference// ListView 列表框 RingtonePreference// —— 铃声 组合控件: PreferenceCategory : 类似于LinearLayou、RelativeLayout,用于组合一组Preference,使布局更具备层次感 。 PreferenceScreen : 所有Preference元素的根节点。 **android 3.0以前使用方法** 使我们的Activity继承PreferenceActivity,然后在onCreate()方法中通过 addPreferencesFromResource(R.xml.custom_preference) (我们自定义的Preference 布局)。 3.0以后已经不建议使用了 推荐使用PreferenceFragment 在onCreate()方法中 addPreferencesFromResource(R.xml.preference); 在Activity中引入Freagment 代码如下 : 在res目录下新建xml文件夹 新建preference.xml文件**frengment中代码** public class SpFrengment extends PreferenceFragment implements Preference.OnPreferenceChangeListener { private CheckBoxPreference mapply_wifiPreference; //打开wifi private CheckBoxPreference mapply_internetPreference; //Internet共享 private ListPreference depart_valuePreference; //部门设置 private EditTextPreference number_editPreference; //输入电话号码 private Preference mwifi_settingPreference; //wifi设置 对应textview 设置对应的OnpreferenceClickListener private CheckBoxPreference apply_wireless; //使用无线网络 private CheckBoxPreference apply_gps; //gps private CheckBoxPreference apply_bluetooth; //蓝牙 private Preference bluetooth_setting; //蓝牙设置 private RingtonePreference ring_key; //蓝牙设置 private String oldDeptId; // 旧部门的名称 public SpFrengment() { } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); **//根据key值找到控件** mapply_wifiPreference = (CheckBoxPreference) findPreference("apply_wifi");//打开Wi-Fi mapply_internetPreference = (CheckBoxPreference) findPreference("apply_internet");//Internet共享 depart_valuePreference = (ListPreference) findPreference("depart_value");//部门 number_editPreference = (EditTextPreference) findPreference("number_edit");//输入号码 mwifi_settingPreference = (Preference) findPreference("wifi_setting");//Wi-Fi设置 apply_wireless = (CheckBoxPreference) findPreference("apply_wireless");//使用无线网络 apply_gps = (CheckBoxPreference) findPreference("apply_gps");//gps设置 apply_bluetooth = (CheckBoxPreference) findPreference("apply_bluetooth");//蓝牙 bluetooth_setting = (Preference) findPreference("bluetooth_setting");//蓝牙设置 ring_key = (RingtonePreference) findPreference("ring_key");//响铃设置 **// 设置监听器** mapply_internetPreference.setOnPreferenceChangeListener(this); mapply_internetPreference.setOnPreferenceChangeListener(this); depart_valuePreference.setOnPreferenceChangeListener(this); number_editPreference.setOnPreferenceChangeListener(this); mwifi_settingPreference.setOnPreferenceChangeListener(this); apply_wireless.setOnPreferenceChangeListener(this); apply_gps.setOnPreferenceChangeListener(this); apply_bluetooth.setOnPreferenceChangeListener(this); bluetooth_setting.setOnPreferenceChangeListener(this); ring_key.setOnPreferenceChangeListener(this); mapply_wifiPreference.setOnPreferenceChangeListener(this); **得到我们的存储Preferences值的对象,然后对其进行相应操作** SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(getActivity()); boolean apply_wifiChecked = shp.getBoolean("apply_wifi", false); } // 当Preference的值发生改变时触发该事件,true则以新值更新控件的状态,false则do noting @Override public boolean onPreferenceChange(Preference preference, Object objValue) { if (preference == mapply_wifiPreference) { Toast.makeText(getActivity(), "mapply_wifiPreference", Toast.LENGTH_SHORT).show(); } else if (preference.getKey().equals("apply_internet")) { Toast.makeText(getActivity(), "apply_internet", Toast.LENGTH_SHORT).show(); } else if (preference == mapply_internetPreference) { Toast.makeText(getActivity(), "mapply_internetPreference", Toast.LENGTH_SHORT).show(); } else if (preference.getKey().equals("wifi_setting")) { Toast.makeText(getActivity(), "wifi_setting", Toast.LENGTH_SHORT).show(); } else if (preference == depart_valuePreference) { Toast.makeText(getActivity(), "depart_valuePreference", Toast.LENGTH_SHORT).show(); } else if (preference == number_editPreference) { Toast.makeText(getActivity(), "number_editPreference", Toast.LENGTH_SHORT).show(); } else if (preference == mwifi_settingPreference) { Toast.makeText(getActivity(), "mwifi_settingPreference", Toast.LENGTH_SHORT).show(); } else if (preference == apply_wireless) {//无线网络 Toast.makeText(getActivity(), "apply_wireless", Toast.LENGTH_SHORT).show(); } else if (preference == apply_gps) { Toast.makeText(getActivity(), "apply_gps", Toast.LENGTH_SHORT).show(); } else if (preference == apply_bluetooth) { Toast.makeText(getActivity(), "apply_bluetooth", Toast.LENGTH_SHORT).show(); } else if (preference == bluetooth_setting) { Toast.makeText(getActivity(), "bluetooth_setting", Toast.LENGTH_SHORT).show(); } else if (preference == ring_key) { Toast.makeText(getActivity(), "ring_key", Toast.LENGTH_SHORT).show(); } return true; //保存更新后的值 } } **Activity中** public class SpActivity extends AppCompatActivity{ @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_spactivity); getFragmentManager().beginTransaction().replace(R.id.frent,new SpFrengment()).commit(); } }