152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/* 252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * you may not use this file except in compliance with the License. 652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * You may obtain a copy of the License at 752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 1052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * See the License for the specific language governing permissions and 1452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * limitations under the License. 1552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 1652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 17721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackbornpackage com.example.android.apis.preference; 1852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 19c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powellimport com.example.android.apis.R; 20c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell 2152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.Intent; 2252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.res.TypedArray; 2352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.net.Uri; 2452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.os.Bundle; 2552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.CheckBoxPreference; 2652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.EditTextPreference; 2752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.ListPreference; 2852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.PreferenceActivity; 2952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.PreferenceCategory; 3052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.preference.PreferenceScreen; 31c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powellimport android.preference.SwitchPreference; 3252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 3352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpublic class PreferencesFromCode extends PreferenceActivity { 3452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 3552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project @Override 3652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project protected void onCreate(Bundle savedInstanceState) { 3752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project super.onCreate(savedInstanceState); 38721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 3952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project setPreferenceScreen(createPreferenceHierarchy()); 4052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 4152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 4252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project private PreferenceScreen createPreferenceHierarchy() { 4352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Root 4452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this); 45721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 46721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn // Inline preferences 4752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project PreferenceCategory inlinePrefCat = new PreferenceCategory(this); 4852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project inlinePrefCat.setTitle(R.string.inline_preferences); 4952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project root.addPreference(inlinePrefCat); 50721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 51c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell // Checkbox preference 52c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell CheckBoxPreference checkboxPref = new CheckBoxPreference(this); 53c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell checkboxPref.setKey("checkbox_preference"); 54c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell checkboxPref.setTitle(R.string.title_checkbox_preference); 55c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell checkboxPref.setSummary(R.string.summary_checkbox_preference); 56c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell inlinePrefCat.addPreference(checkboxPref); 57c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell 58c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell // Switch preference 59c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell SwitchPreference switchPref = new SwitchPreference(this); 60c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell switchPref.setKey("switch_preference"); 61c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell switchPref.setTitle(R.string.title_switch_preference); 62c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell switchPref.setSummary(R.string.summary_switch_preference); 63c81d080a6a4690eb9b61ef3f2d3a7f25066145d3Adam Powell inlinePrefCat.addPreference(switchPref); 64721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 6552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Dialog based preferences 6652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this); 6752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project dialogBasedPrefCat.setTitle(R.string.dialog_based_preferences); 6852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project root.addPreference(dialogBasedPrefCat); 6952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 7052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Edit text preference 7152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project EditTextPreference editTextPref = new EditTextPreference(this); 7252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project editTextPref.setDialogTitle(R.string.dialog_title_edittext_preference); 7352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project editTextPref.setKey("edittext_preference"); 7452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project editTextPref.setTitle(R.string.title_edittext_preference); 7552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project editTextPref.setSummary(R.string.summary_edittext_preference); 7652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project dialogBasedPrefCat.addPreference(editTextPref); 77721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 7852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // List preference 7952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project ListPreference listPref = new ListPreference(this); 8052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project listPref.setEntries(R.array.entries_list_preference); 8152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project listPref.setEntryValues(R.array.entryvalues_list_preference); 8252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project listPref.setDialogTitle(R.string.dialog_title_list_preference); 8352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project listPref.setKey("list_preference"); 8452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project listPref.setTitle(R.string.title_list_preference); 8552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project listPref.setSummary(R.string.summary_list_preference); 8652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project dialogBasedPrefCat.addPreference(listPref); 87721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 8852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Launch preferences 8952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project PreferenceCategory launchPrefCat = new PreferenceCategory(this); 9052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project launchPrefCat.setTitle(R.string.launch_preferences); 9152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project root.addPreference(launchPrefCat); 9252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 9352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /* 9452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * The Preferences screenPref serves as a screen break (similar to page 9552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * break in word processing). Like for other preference types, we assign 9652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * a key here so that it is able to save and restore its instance state. 9752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 9852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Screen preference 9952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project PreferenceScreen screenPref = getPreferenceManager().createPreferenceScreen(this); 10052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project screenPref.setKey("screen_preference"); 10152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project screenPref.setTitle(R.string.title_screen_preference); 10252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project screenPref.setSummary(R.string.summary_screen_preference); 10352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project launchPrefCat.addPreference(screenPref); 104721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 10552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project /* 10652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * You can add more preferences to screenPref that will be shown on the 10752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * next screen. 10852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 109721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 11052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Example of next screen toggle preference 11152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project CheckBoxPreference nextScreenCheckBoxPref = new CheckBoxPreference(this); 11252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project nextScreenCheckBoxPref.setKey("next_screen_toggle_preference"); 11352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project nextScreenCheckBoxPref.setTitle(R.string.title_next_screen_toggle_preference); 11452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project nextScreenCheckBoxPref.setSummary(R.string.summary_next_screen_toggle_preference); 11552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project screenPref.addPreference(nextScreenCheckBoxPref); 116721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 11752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Intent preference 11852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project PreferenceScreen intentPref = getPreferenceManager().createPreferenceScreen(this); 11952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project intentPref.setIntent(new Intent().setAction(Intent.ACTION_VIEW) 12052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project .setData(Uri.parse("http://www.android.com"))); 12152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project intentPref.setTitle(R.string.title_intent_preference); 12252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project intentPref.setSummary(R.string.summary_intent_preference); 12352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project launchPrefCat.addPreference(intentPref); 124721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 12552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Preference attributes 12652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project PreferenceCategory prefAttrsCat = new PreferenceCategory(this); 12752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project prefAttrsCat.setTitle(R.string.preference_attributes); 12852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project root.addPreference(prefAttrsCat); 129721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 13052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Visual parent toggle preference 13152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project CheckBoxPreference parentCheckBoxPref = new CheckBoxPreference(this); 13252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project parentCheckBoxPref.setTitle(R.string.title_parent_preference); 13352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project parentCheckBoxPref.setSummary(R.string.summary_parent_preference); 13452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project prefAttrsCat.addPreference(parentCheckBoxPref); 135721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 13652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // Visual child toggle preference 13752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // See res/values/attrs.xml for the <declare-styleable> that defines 13852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project // TogglePrefAttrs. 13952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project TypedArray a = obtainStyledAttributes(R.styleable.TogglePrefAttrs); 14052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project CheckBoxPreference childCheckBoxPref = new CheckBoxPreference(this); 14152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project childCheckBoxPref.setTitle(R.string.title_child_preference); 14252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project childCheckBoxPref.setSummary(R.string.summary_child_preference); 14352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project childCheckBoxPref.setLayoutResource( 14452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project a.getResourceId(R.styleable.TogglePrefAttrs_android_preferenceLayoutChild, 14552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 0)); 14652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project prefAttrsCat.addPreference(childCheckBoxPref); 14752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project a.recycle(); 148721a184e0ab71177f886ec08778e9dab1f4239f5Dianne Hackborn 14952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return root; 15052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 15152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project} 152