Modify retain sample to show of retained targets.

Change-Id: I33dd83651006469ef2af7976861f3b832e13bf60
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java b/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java
index 9552370..383242a 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java
@@ -22,7 +22,9 @@
 import android.app.Fragment;
 import android.app.FragmentManager;
 import android.os.Bundle;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.ProgressBar;
@@ -34,34 +36,63 @@
  * easier than using the raw Activity.onRetainNonConfiguratinInstance() API.
  */
 public class FragmentRetainInstance extends Activity {
-    RetainedFragment mRetainedFragment;
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.fragment_retain_instance);
-
-        // Watch for button clicks.
-        Button button = (Button)findViewById(R.id.restart);
-        button.setOnClickListener(new OnClickListener() {
-            public void onClick(View v) {
-                mRetainedFragment.restart();
-            }
-        });
-
-        FragmentManager fm = getFragmentManager();
         
-        // Check to see if we retained the fragment.
-        mRetainedFragment = (RetainedFragment)fm.findFragmentByTag("retained");
-
-        // If not retained (or first time running), we need to re-create it.
-        if (mRetainedFragment == null) {
-            mRetainedFragment = new RetainedFragment();
-            fm.openTransaction().add(mRetainedFragment, "retained").commit();
+        // First time init, create the UI.
+        if (savedInstanceState == null) {
+            getFragmentManager().openTransaction().add(android.R.id.content,
+                    new UiFragment()).commit();
         }
     }
 
     /**
+     * This is a fragment showing UI that will be updated from work done
+     * in the retained fragment.
+     */
+    public static class UiFragment extends Fragment {
+        RetainedFragment mWorkFragment;
+
+        @Override
+        public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                Bundle savedInstanceState) {
+            View v = inflater.inflate(R.layout.fragment_retain_instance, container, false);
+
+            // Watch for button clicks.
+            Button button = (Button)v.findViewById(R.id.restart);
+            button.setOnClickListener(new OnClickListener() {
+                public void onClick(View v) {
+                    if (mWorkFragment != null) {
+                        mWorkFragment.restart();
+                    }
+                }
+            });
+
+            return v;
+        }
+
+        @Override
+        public void onActivityCreated(Bundle savedInstanceState) {
+            super.onActivityCreated(savedInstanceState);
+
+            FragmentManager fm = getFragmentManager();
+
+            // Check to see if we have retained the worker fragment.
+            mWorkFragment = (RetainedFragment)fm.findFragmentByTag("work");
+
+            // If not retained (or first time running), we need to create it.
+            if (mWorkFragment == null) {
+                mWorkFragment = new RetainedFragment();
+                // Tell it who it is working with.
+                mWorkFragment.setTargetFragment(this, 0);
+                fm.openTransaction().add(mWorkFragment, "work").commit();
+            }
+        }
+
+    }
+
+    /**
      * This is the Fragment implementation that will be retained across
      * activity instances.  It represents some ongoing work, here a thread
      * we have that sits around incrementing a progress indicator.
@@ -145,8 +176,8 @@
         public void onActivityCreated(Bundle savedInstanceState) {
             super.onActivityCreated(savedInstanceState);
             
-            // Retrieve the progress bar from the current activity.
-            mProgressBar = (ProgressBar)getActivity().findViewById(
+            // Retrieve the progress bar from the target's view hierarchy.
+            mProgressBar = (ProgressBar)getTargetFragment().getView().findViewById(
                     R.id.progress_horizontal);
             
             // We are ready for our thread to go.