Allow user-customized FragmentTabHost layouts.

This delays the convenience construction of the standard view hierarchy
until just before calling TabHost's setup().

Previously, initFragmentTabHost() would always construct the standard
hierarchy, breaking any other layout supplied by the user.

Bug: https://code.google.com/p/android/issues/detail?id=53230
Change-Id: I90c6d5afd1fa9774f8f079cc825b4f60ac6f7c6f
diff --git a/v13/java/android/support/v13/app/FragmentTabHost.java b/v13/java/android/support/v13/app/FragmentTabHost.java
index 63f9e34..01378d9 100644
--- a/v13/java/android/support/v13/app/FragmentTabHost.java
+++ b/v13/java/android/support/v13/app/FragmentTabHost.java
@@ -135,7 +135,9 @@
         a.recycle();
 
         super.setOnTabChangedListener(this);
+    }
 
+    private void ensureHierarchy(Context context) {
         // If owner hasn't made its own view hierarchy, then as a convenience
         // we will construct a standard one here.
         if (findViewById(android.R.id.tabs) == null) {
@@ -175,6 +177,7 @@
     }
 
     public void setup(Context context, FragmentManager manager) {
+        ensureHierarchy(context);  // Ensure views required by super.setup()
         super.setup();
         mContext = context;
         mFragmentManager = manager;
@@ -182,6 +185,7 @@
     }
 
     public void setup(Context context, FragmentManager manager, int containerId) {
+        ensureHierarchy(context);  // Ensure views required by super.setup()
         super.setup();
         mContext = context;
         mFragmentManager = manager;
diff --git a/v4/java/android/support/v4/app/FragmentTabHost.java b/v4/java/android/support/v4/app/FragmentTabHost.java
index b9e0e1e..7ffabdd 100644
--- a/v4/java/android/support/v4/app/FragmentTabHost.java
+++ b/v4/java/android/support/v4/app/FragmentTabHost.java
@@ -143,7 +143,9 @@
         a.recycle();
 
         super.setOnTabChangedListener(this);
+    }
 
+    private void ensureHierarchy(Context context) {
         // If owner hasn't made its own view hierarchy, then as a convenience
         // we will construct a standard one here.
         if (findViewById(android.R.id.tabs) == null) {
@@ -183,6 +185,7 @@
     }
 
     public void setup(Context context, FragmentManager manager) {
+        ensureHierarchy(context);  // Ensure views required by super.setup()
         super.setup();
         mContext = context;
         mFragmentManager = manager;
@@ -190,6 +193,7 @@
     }
 
     public void setup(Context context, FragmentManager manager, int containerId) {
+        ensureHierarchy(context);  // Ensure views required by super.setup()
         super.setup();
         mContext = context;
         mFragmentManager = manager;