Android PreferenceActivity的介紹

來源:互聯網
上載者:User

轉載:http://blog.chinaunix.net/uid-24666775-id-351136.html

 

在Android中的APIdemos是中經常遇到過繼承於PreferenceActivity這個類,緊接著就是addPreferencesFromResource(R.xml.*******);(附:這個******就是一個XML檔案,以Preference_dependencies為例),現在我們進這個XML檔案看下發現:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><PreferenceCategoryandroid:title="@string/example_preference_dependency"><CheckBoxPreferenceandroid:key="wifi"android:title="@string/title_wifi" /><EditTextPreferenceandroid:layout="?android:attr/preferenceLayoutChild"android:title="@string/title_wifi_settings"android:dependency="wifi" /></PreferenceCategory></PreferenceScreen>

PreferencrScreen這裡我是理解為一個視窗(可能是做展訊的緣故),下面都是他的組建,即構成了一個與使用者的互動介面(將會以一個完整的頁面顯示),這個XML檔案主要可以分為兩類:一類是管理布局的顯示,如PreferenceScreen;另一類是具體的設定內容,如CheckBoxPreference,EditTextPrefrencr。

在上面的程式還發現有PreferenceCategory這個屬性,這個主要的作用我是認為將他裡面涵蓋的東西作為他的一個屬性。附其他的屬性介紹:Key為這個Preference的ID,設定了才可以在代碼中引用,Title是顯示的標題,Summary是顯示在標題下的文字介紹。效果如下所示:

 

上面我們介紹了PreferenceActivity設定介面。當PreferenceActivity中的內容改變時,Android系統會自動進行儲存和持久化維護,我們只需要在要用的設定介面中資料的地方進行讀取就可以了。同時Android還提供了OnPreferenceClickListener和OnPreferenceChangeListener兩個與Preference相關的監聽介面,當PreferenceActivity中的某一個Preference進行了點擊或者改變的操作時,都會回調介面中的函數,這樣可以第一個時間向其他Activity等通知系統設定進行了改變。

還有一種方法通過setPreferenceScreen(PreferenceScreen),通過自己寫的方法也可以實現上述操作;

public class PreferencesFromCode extends PreferenceActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                setPreferenceScreen(createPreferenceHierarchy());    }    private PreferenceScreen createPreferenceHierarchy() {        // Root        PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);                // Inline preferences         PreferenceCategory inlinePrefCat = new PreferenceCategory(this);        inlinePrefCat.setTitle(R.string.inline_preferences);        root.addPreference(inlinePrefCat);                // Toggle preference        CheckBoxPreference togglePref = new CheckBoxPreference(this);        togglePref.setKey("toggle_preference");        togglePref.setTitle(R.string.title_toggle_preference);        togglePref.setSummary(R.string.summary_toggle_preference);        inlinePrefCat.addPreference(togglePref);                        // Dialog based preferences        PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this);        dialogBasedPrefCat.setTitle(R.string.dialog_based_preferences);        root.addPreference(dialogBasedPrefCat);        // Edit text preference        EditTextPreference editTextPref = new EditTextPreference(this);        editTextPref.setDialogTitle(R.string.dialog_title_edittext_preference);        editTextPref.setKey("edittext_preference");        editTextPref.setTitle(R.string.title_edittext_preference);        editTextPref.setSummary(R.string.summary_edittext_preference);        dialogBasedPrefCat.addPreference(editTextPref);                // List preference        ListPreference listPref = new ListPreference(this);        listPref.setEntries(R.array.entries_list_preference);        listPref.setEntryValues(R.array.entryvalues_list_preference);        listPref.setDialogTitle(R.string.dialog_title_list_preference);        listPref.setKey("list_preference");        listPref.setTitle(R.string.title_list_preference);        listPref.setSummary(R.string.summary_list_preference);        dialogBasedPrefCat.addPreference(listPref);          return root      } }

效果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.