From 05c2cb0748130097874ba977e24c65f6c493ab17 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Wed, 28 Jul 2010 14:33:04 -0700 Subject: [PATCH] Add sample code for PreferenceFragment. Change-Id: I64222124daa117a2ea61dc55f2e26af78d3689c2 --- samples/ApiDemos/AndroidManifest.xml | 38 +++++-- .../res/layout-land/fragment_preferences.xml | 32 ++++++ .../ApiDemos/res/layout/fragment_layout.xml | 2 +- .../res/layout/fragment_preferences.xml | 34 ++++++ samples/ApiDemos/res/values/strings.xml | 2 + .../android/apis/app/FragmentPreferences.java | 104 ++++++++++++++++++ 6 files changed, 201 insertions(+), 11 deletions(-) create mode 100644 samples/ApiDemos/res/layout-land/fragment_preferences.xml create mode 100644 samples/ApiDemos/res/layout/fragment_preferences.xml create mode 100644 samples/ApiDemos/src/com/example/android/apis/app/FragmentPreferences.java diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml index 9fcd9cbdf..dd8d9a3f0 100644 --- a/samples/ApiDemos/AndroidManifest.xml +++ b/samples/ApiDemos/AndroidManifest.xml @@ -211,14 +211,16 @@ - + - + @@ -233,14 +235,16 @@ - + - + @@ -249,42 +253,56 @@ - + - + - + - + - + - + + + + + + + + diff --git a/samples/ApiDemos/res/layout-land/fragment_preferences.xml b/samples/ApiDemos/res/layout-land/fragment_preferences.xml new file mode 100644 index 000000000..6b81f3d15 --- /dev/null +++ b/samples/ApiDemos/res/layout-land/fragment_preferences.xml @@ -0,0 +1,32 @@ + + + + + + + + diff --git a/samples/ApiDemos/res/layout/fragment_layout.xml b/samples/ApiDemos/res/layout/fragment_layout.xml index e7704ff47..471f6391f 100644 --- a/samples/ApiDemos/res/layout/fragment_layout.xml +++ b/samples/ApiDemos/res/layout/fragment_layout.xml @@ -19,7 +19,7 @@ - diff --git a/samples/ApiDemos/res/layout/fragment_preferences.xml b/samples/ApiDemos/res/layout/fragment_preferences.xml new file mode 100644 index 000000000..78e9d18a2 --- /dev/null +++ b/samples/ApiDemos/res/layout/fragment_preferences.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml index f22c98a58..f75f1b01b 100644 --- a/samples/ApiDemos/res/values/strings.xml +++ b/samples/ApiDemos/res/values/strings.xml @@ -107,6 +107,8 @@ Show fragment 1 menu Show fragment 2 menu + App/Fragment/Preferences + App/Fragment/Retain Instance Current progress of retained fragment; restarts if fragment is re-created. diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentPreferences.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentPreferences.java new file mode 100644 index 000000000..11232ed22 --- /dev/null +++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentPreferences.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.android.apis.app; + +import com.example.android.apis.R; +import com.example.android.apis.Shakespeare; + +import android.app.Activity; +import android.app.Fragment; +import android.app.ListFragment; +import android.content.Context; +import android.content.Intent; +import android.content.res.TypedArray; +import android.net.Uri; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.EditTextPreference; +import android.preference.ListPreference; +import android.preference.PreferenceCategory; +import android.preference.PreferenceFragment; +import android.preference.PreferenceScreen; +import android.util.Log; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.ListView; + +/** + * Demonstration of PreferenceFragment, splitting the activity into a + * list categories and preferences. + */ +//BEGIN_INCLUDE(activity) +public class FragmentPreferences extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // The content for this activity places CategoriesFragment to one + // side, and leaves the rest to dynamically add the prefs fragment. + setContentView(R.layout.fragment_preferences); + } + + /** + * This fragment shows a list of categories the user can pick. When they + * pick one, the corresponding preferences fragment is created and shown. + */ + public static class CategoriesFragment extends ListFragment { + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + setListAdapter(new ArrayAdapter(getActivity(), + android.R.layout.simple_list_item_1, + new String[] { "Prefs 1", "Prefs 2" })); + switchPreferences(0); + } + + @Override + public void onListItemClick(ListView l, View v, int position, long id) { + switchPreferences(position); + } + + /** + * Show the given preferences, replacing whatever was last shown. + */ + void switchPreferences(int which) { + Fragment f = which == 0 ? new Prefs1Fragment() : new Prefs2Fragment(); + getActivity().openFragmentTransaction().replace(R.id.prefs, f).commit(); + } + } + + public static class Prefs1Fragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.preferences); + } + } + + public static class Prefs2Fragment extends PreferenceFragment { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.preference_dependencies); + } + } +} +//END_INCLUDE(activity)