1c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn/*
2c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Copyright (C) 2010 The Android Open Source Project
3c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn *
4c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
5c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * you may not use this file except in compliance with the License.
6c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * You may obtain a copy of the License at
7c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn *
8c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
9c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn *
10c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Unless required by applicable law or agreed to in writing, software
11c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
12c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * See the License for the specific language governing permissions and
14c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * limitations under the License.
15c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */
16c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
17c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornpackage com.example.android.supportv4.app;
18c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
19c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.content.Intent;
20c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.content.res.Configuration;
21c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.os.Bundle;
22c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.util.TypedValue;
23c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.LayoutInflater;
24c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.View;
25c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.ViewGroup;
26c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.ArrayAdapter;
27c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.ListView;
28c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.ScrollView;
29c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.TextView;
30c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
31def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.Fragment;
32def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.FragmentActivity;
33def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.FragmentTransaction;
34def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.ListFragment;
35def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas
36def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport com.example.android.supportv4.R;
37def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport com.example.android.supportv4.Shakespeare;
38def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas
39c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn/**
40c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Demonstration of using fragments to implement different activity layouts.
41c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * This sample provides a different layout (and activity flow) when run in
42c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * landscape.
43c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */
44c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornpublic class FragmentLayoutSupport extends FragmentActivity {
45c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
46c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//BEGIN_INCLUDE(main)
47c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    @Override
48c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    protected void onCreate(Bundle savedInstanceState) {
49c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        super.onCreate(savedInstanceState);
50c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
51c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        setContentView(R.layout.fragment_layout_support);
52c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    }
53c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//END_INCLUDE(main)
54c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
55c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    /**
56c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     * This is a secondary activity, to show what the user has selected
57c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     * when the screen is not large enough to show it all in one activity.
58c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     */
59c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//BEGIN_INCLUDE(details_activity)
60c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    public static class DetailsActivity extends FragmentActivity {
61c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
62c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
63c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        protected void onCreate(Bundle savedInstanceState) {
64c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            super.onCreate(savedInstanceState);
65c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
66c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            if (getResources().getConfiguration().orientation
67c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                    == Configuration.ORIENTATION_LANDSCAPE) {
68c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // If the screen is now in landscape mode, we can show the
69c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // dialog in-line with the list so we don't need this activity.
70c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                finish();
71c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                return;
72c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            }
73c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
74c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            if (savedInstanceState == null) {
75c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // During initial setup, plug in the details fragment.
76c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                DetailsFragment details = new DetailsFragment();
77c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                details.setArguments(getIntent().getExtras());
78c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                getSupportFragmentManager().beginTransaction().add(
79c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                        android.R.id.content, details).commit();
80c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            }
81c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
82c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    }
83c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//END_INCLUDE(details_activity)
84c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
85c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    /**
86c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     * This is the "top-level" fragment, showing a list of items that the
87c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     * user can pick.  Upon picking an item, it takes care of displaying the
88c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     * data to the user as appropriate based on the currrent UI layout.
89c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     */
90c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//BEGIN_INCLUDE(titles)
91c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    public static class TitlesFragment extends ListFragment {
92c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        boolean mDualPane;
93c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        int mCurCheckPosition = 0;
94c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
95c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
96c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public void onActivityCreated(Bundle savedInstanceState) {
97c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            super.onActivityCreated(savedInstanceState);
98c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
99c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            // Populate list with our static array of titles.
100c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            setListAdapter(new ArrayAdapter<String>(getActivity(),
101c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                    R.layout.simple_list_item_checkable_1,
102c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                    android.R.id.text1, Shakespeare.TITLES));
103c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
104c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            // Check to see if we have a frame in which to embed the details
105c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            // fragment directly in the containing UI.
106c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            View detailsFrame = getActivity().findViewById(R.id.details);
107c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            mDualPane = detailsFrame != null && detailsFrame.getVisibility() == View.VISIBLE;
108c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
109c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            if (savedInstanceState != null) {
110c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // Restore last state for checked position.
111c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
112c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            }
113c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
114c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            if (mDualPane) {
115c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // In dual-pane mode, the list view highlights the selected item.
116c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
117c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // Make sure our UI is in the correct state.
118c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                showDetails(mCurCheckPosition);
119c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            }
120c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
121c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
122c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
123c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public void onSaveInstanceState(Bundle outState) {
124c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            super.onSaveInstanceState(outState);
125c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            outState.putInt("curChoice", mCurCheckPosition);
126c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
127c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
128c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
129c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public void onListItemClick(ListView l, View v, int position, long id) {
130c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            showDetails(position);
131c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
132c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
133c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        /**
134c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * Helper function to show the details of a selected item, either by
135c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * displaying a fragment in-place in the current UI, or starting a
136c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * whole new activity in which it is displayed.
137c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         */
138c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        void showDetails(int index) {
139c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            mCurCheckPosition = index;
140c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
141c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            if (mDualPane) {
142c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // We can display everything in-place with fragments, so update
143c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // the list to highlight the selected item and show the data.
144c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                getListView().setItemChecked(index, true);
145c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
146c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // Check what fragment is currently shown, replace if needed.
147c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                DetailsFragment details = (DetailsFragment)
148c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                        getFragmentManager().findFragmentById(R.id.details);
149c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                if (details == null || details.getShownIndex() != index) {
150c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                    // Make new fragment to show this selection.
151c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                    details = DetailsFragment.newInstance(index);
152c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
153c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                    // Execute a transaction, replacing any existing fragment
154c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                    // with this one inside the frame.
15529cbd1b6c507fa7b2ee34211b79db54fa567fd52Adam Powell                    getFragmentManager().beginTransaction()
15629cbd1b6c507fa7b2ee34211b79db54fa567fd52Adam Powell                            .replace(R.id.details, details)
15729cbd1b6c507fa7b2ee34211b79db54fa567fd52Adam Powell                            .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
15829cbd1b6c507fa7b2ee34211b79db54fa567fd52Adam Powell                            .commit();
159c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                }
160c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
161c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            } else {
162c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // Otherwise we need to launch a new activity to display
163c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // the dialog fragment with selected text.
164c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                Intent intent = new Intent();
165c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                intent.setClass(getActivity(), DetailsActivity.class);
166c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                intent.putExtra("index", index);
167c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                startActivity(intent);
168c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            }
169c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
170c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    }
171c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//END_INCLUDE(titles)
172c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
173c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    /**
174c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     * This is the secondary fragment, displaying the details of a particular
175c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     * item.
176c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn     */
177c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//BEGIN_INCLUDE(details)
178c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    public static class DetailsFragment extends Fragment {
179c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        /**
180c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * Create a new instance of DetailsFragment, initialized to
181c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * show the text at 'index'.
182c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         */
183c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public static DetailsFragment newInstance(int index) {
184c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            DetailsFragment f = new DetailsFragment();
185c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
186c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            // Supply index input as an argument.
187c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            Bundle args = new Bundle();
188c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            args.putInt("index", index);
189c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            f.setArguments(args);
190c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
191c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            return f;
192c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
193c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
194c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public int getShownIndex() {
195c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            return getArguments().getInt("index", 0);
196c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
197c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
198c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
199c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public View onCreateView(LayoutInflater inflater, ViewGroup container,
200c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                Bundle savedInstanceState) {
201c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            if (container == null) {
202c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // We have different layouts, and in one of them this
203c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // fragment's containing frame doesn't exist.  The fragment
204c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // may still be created from its saved state, but there is
205c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // no reason to try to create its view hierarchy because it
206c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // won't be displayed.  Note this is not needed -- we could
207c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // just run the code below, where we would create and return
208c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                // the view hierarchy; it would just never be used.
209c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                return null;
210c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            }
211c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
212c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            ScrollView scroller = new ScrollView(getActivity());
213c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            TextView text = new TextView(getActivity());
214c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            int padding = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
215c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                    4, getActivity().getResources().getDisplayMetrics());
216c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            text.setPadding(padding, padding, padding, padding);
217c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            scroller.addView(text);
218c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            text.setText(Shakespeare.DIALOGUE[getShownIndex()]);
219c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            return scroller;
220c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
221c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    }
222c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn//END_INCLUDE(details)
223c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn}
224