首先讓大家看圖 看到這張圖是 不是很熟悉 我想大家應該會好奇他是怎麼實現 咋一看是不是覺得實現起來有點困難 因為各個按鈕之間會綁定牽連在一起
原來android內部提供更容易的實現他的方法
也就是preferenceActivity該類封裝了sharedpreferences所以他的所有子類都具有儲存key-value對的能力
比較常用的設定項 有三類:
1、checkboxpreferences
2、edittextpreferences
3、listviewpreferences
好了 直接看列子吧
分2步:
1、在res目錄下建一個xml目錄 並在該目錄下建立一個preferences_setting.xml
<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:title="我的位置源" > <CheckBoxPreference android:key="wireless_network" android:summary="使用無線網路查看應用程式(例如Google地圖)中的位置" android:title="使用無線網路" /> <CheckBoxPreference android:key="gps_satellite_setting" android:summary="定位時,精確到街道層級(取消選擇可節約電量)" android:title="啟用GPS衛星設定" /> </PreferenceCategory> <PreferenceCategory android:title="個人資訊設定" > <CheckBoxPreference android:key="yesno_save_individual_info" android:title="是否儲存個人資訊" /> <EditTextPreference android:key="individual_name" android:summary="請輸入真實姓名" android:title="姓名" /> <PreferenceScreen android:key="other_individual_msg" android:summary="是否工作、手機" android:title="其他個人資訊" > <CheckBoxPreference android:key="is_an_employee" android:title="是否工作" /> <EditTextPreference android:key="mobile" android:summary="請輸入真實的手機號" android:title="手機" /> </PreferenceScreen> </PreferenceCategory> </PreferenceScreen>
2 、java檔案:
package net.blogjava.mobile; import android.content.SharedPreferences;import android.os.Bundle;import android.preference.Preference;import android.preference.PreferenceActivity;import android.preference.PreferenceScreen;import android.preference.Preference.OnPreferenceChangeListener; public class Main extends PreferenceActivity implements OnPreferenceChangeListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getPreferenceManager().setSharedPreferencesName("setting"); addPreferencesFromResource(R.xml.preference_setting); Preference individualNamePreference = findPreference("individual_name"); SharedPreferences sharedPreferences= individualNamePreference.getSharedPreferences(); individualNamePreference.setSummary(sharedPreferences.getString("individual_name", "")); if (sharedPreferences.getBoolean("yesno_save_individual_info", false)) individualNamePreference.setEnabled(true); else individualNamePreference.setEnabled(false); individualNamePreference.setOnPreferenceChangeListener(this); } public boolean onPreferenceChange(Preference preference, Object newValue) { preference.setSummary(String.valueOf(newValue)); return true; } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if ("yesno_save_individual_info".equals(preference.getKey())) { findPreference("individual_name").setEnabled( !findPreference("individual_name").isEnabled()); } return super.onPreferenceTreeClick(preferenceScreen, preference); }}