
<p>This section includes samples showing the use of the application
package features of the static support library, in particular fragments
and loaders.</p>
<ul>
  <li><a href="#Fragment">Fragment</a></li>
  <li><a href="#LoaderManager">LoaderManager</a></li>
</ul>


<h3 id="Fragment">Fragment</h3>
<dl>
  <dt><a href="FragmentAlertDialogSupport.html">Fragment Alert Dialog</a></dt>
  <dd>Demonstrates how to use a DialogFragment to show and manage an
  AlertDialog.</dd>
  
  <dt><a href="FragmentArgumentsSupport.html">Fragment Arguments</a></dt>
  <dd>Demonstrates how a fragment can be initialized with arguments,
  supplying them either as an argument Bundle at runtime or XML attributes
  in a &lt;fragment> tag.</dd>
  
  <dt><a href="FragmentContextMenuSupport.html">Fragment Context Menu</a></dt>
  <dd>Demonstrates how to display and respond to a context menu that is
  display from a fragment's view hierarchy.</dd>
  
  <dt><a href="FragmentCustomAnimationSupport.html">Fragment Custom Animation</a></dt>
  <dd>Demonstrates the use of a custom animation for pushing and popping fragments
  on the back stack.</dd>

  <dt><a href="FragmentDialogSupport.html">Fragment Dialog</a></dt>
  <dd>Demonstrates use of DialogFragment to show various types of dialogs.</dd>
  
  <dt><a href="FragmentDialogOrActivitySupport.html">Fragment Dialog or Activity</a></dt>
  <dd>Demonstrates how the same Fragment implementation can be used to provide the UI
  for either an Activity or Dialog.</dd>
  
  <dt><a href="FragmentHideShowSupport.html">Fragment Hide Show</a></dt>
  <dd>Demonstrates hiding and showing fragments.</dd>
  
  <dt><a href="FragmentLayoutSupport.html">Fragment Layout</a></dt>
  <dd>Demonstrates use of the &lt;fragment&gt; tag to embed a Fragment in
  an Activity's content view layout, and making the layout change based on
  configuration to achieve different UI flows.</dd>
  
  <dt><a href="FragmentListArraySupport.html">Fragment List Array</a></dt>
  <dd>Demonstrates use of ListFragment to show the contents of a simple ArrayAdapter.</dd>
  
  <dt><a href="FragmentMenuSupport.html">Fragment Menu</a></dt>
  <dd>Demonstrates populating custom menu items from a Fragment.</dd>
  
  <dt><a href="FragmentPagerSupport.html">Fragment Pager Support</a></dt>
  <dd>Demonstrates the use of the support class ViewPager with a
  FragmentPagerAdapter to build a user interface where the user can fling
  left or right to switch between fragments.</dd>

  <dt><a href="FragmentStatePagerSupport.html">Fragment State Pager Support</a></dt>
  <dd>Demonstrates the use of the support class ViewPager with a
  FragmentStatePagerAdapter to build a user interface where the user can fling
  left or right to switch between fragments.  This versions of the adapter
  doesn't keep around the fragment instances that ViewPager has destroyed.</dd>

  <dt><a href="FragmentReceiveResultSupport.html">Fragment Receive Result</a></dt>
  <dd>Demonstrates starting a new Activity from a Fragment, and receiving
  a result back from it.</dd>
  
  <dt><a href="FragmentRetainInstanceSupport.html">Fragment Retain Instance</a></dt>
  <dd>Demonstrates a Fragment can be used to easily retain active state across
  an Activity's configuration change.</dd>
  
  <dt><a href="FragmentStackSupport.html">Fragment Stack</a></dt>
  <dd>Demonstrates creating a stack of Fragment instances similar to the
  traditional stack of activities.</dd>
  
  <dt><a href="FragmentTabs.html">Fragment Tabs</a></dt>
  <dd>Demonstrates the use of fragments to implement switching between
  tabs in a TabHost.</dd>

  <dt><a href="FragmentTabsPager.html">Fragment Tabs Pager</a></dt>
  <dd>Demonstrates the use of fragments to implement switching between
  tabs in a TabHost, using a ViewPager to manager the fragments so that
  the user can also fling left and right to switch tabs.</dd>

</dl>

<h3 id="LoaderManager">LoaderManager</h3>
<dl>
  <dt><a href="LoaderCursorSupport.html">Loader Cursor</a></dt>
  <dd>Demonstrates use of LoaderManager to perform a query for a Cursor that
  populates a ListFragment.</dd>

  <dt><a href="LoaderCustomSupport.html">Loader Custom</a></dt>
  <dd>Demonstrates implementation and use of a custom Loader class.  The
  custom class here "loads" the currently installed applications.</dd>
  
  <dt><a href="LoaderThrottleSupport.html">Loader Throttle</a></dt>
  <dd>Complete end-to-end demonstration of a simple content provider that
  populates data in a list through a cursor loader.  The UI allows the list
  to be populated with a series of items, showing how AsyncTaskLoader's
  throttling facility can be used to control how much a Loader is refreshed
  in this case.</dd>
</dl>
 