Working with the PreferenceActivity Class

Defining a preferences screen is fairly simple: Provide the values to the necessary attributes and you’re done. Though the preferences screen may be defined in XML, simply defining it in XML doesn’t mean that it will show up onscreen. To display your preferences screen, you create a PreferenceActivity.

The PreferenceActivity shows a hierarchy of preferences onscreen according to a preferences file defined in XML — such as the one you may have just created. The preferences can span multiple screens (if multiple PreferenceScreen objects are present and nested). These preferences are automatically saved to SharedPreferences. As a bonus, the preferences that are shown automatically follow the visual style of the system preferences, which allows your application to have a consistent user experience in conjunction with the default Android platform.

To inflate and display the PreferenceScreen you may have just built, add an activity that derives from PreferenceActivity to your application and name it TaskPreferences. Add the code in Listing 15-2.

Listing 15-2: The TaskPreferences File

public class TaskPreferences extends PreferenceActivity { →1

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.task_preferences); →5

EditTextPreference timeDefault = (EditTextPreference)

findPreference(getString(R.string.pref_default_time_from_now_key)); →8

timeDefault.getEditText().setKeyListener(DigitsKeyListener.getInstance()); ...

Get Android Application Development For Dummies, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.