content: /*
   * Copyright (C) 2006 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 android.app;
  
  import android.os.Bundle;
  import android.view.View;
  import android.widget.TabHost;
  import android.widget.TabWidget;
  import android.widget.TextView;
  
  /**
   * <p>For apps developing against {@link android.os.Build.VERSION_CODES#HONEYCOMB}
   * or later, tabs are typically presented in the UI using the new
   * {@link ActionBar#newTab() ActionBar.newTab()} and
   * related APIs for placing tabs within their action bar area.</p>
   *
   * @deprecated New applications should use Fragments instead of this class;
   * to continue to run on older devices, you can use the v4 support library
   * which provides a version of the Fragment API that is compatible down to
   * {@link android.os.Build.VERSION_CODES#DONUT}.
   */
  @Deprecated
  public class TabActivity extends ActivityGroup {
      private TabHost mTabHost;
      private String mDefaultTab = null;
      private int mDefaultTabIndex = -1;
  
      public TabActivity() {
      }
  
      /**
       * Sets the default tab that is the first tab highlighted.
       * 
       * @param tag the name of the default tab
       */
      public void setDefaultTab(String tag) {
          mDefaultTab = tag;
          mDefaultTabIndex = -1;
      }
  
      /**
       * Sets the default tab that is the first tab highlighted.
       * 
       * @param index the index of the default tab
       */
      public void setDefaultTab(int index) {
          mDefaultTab = null;
          mDefaultTabIndex = index;
      }
  
      @Override
      protected void onRestoreInstanceState(Bundle state) {
          super.onRestoreInstanceState(state);
          ensureTabHost();
          String cur = state.getString("currentTab");
          if (cur != null) {
              mTabHost.setCurrentTabByTag(cur);
          }
          if (mTabHost.getCurrentTab() < 0) {
              if (mDefaultTab != null) {
                  mTabHost.setCurrentTabByTag(mDefaultTab);
              } else if (mDefaultTabIndex >= 0) {
                  mTabHost.setCurrentTab(mDefaultTabIndex);
              }
          }
      }
  
      @Override
      protected void onPostCreate(Bundle icicle) {        
          super.onPostCreate(icicle);
  
          ensureTabHost();
  
          if (mTabHost.getCurrentTab() == -1) {
              mTabHost.setCurrentTab(0);
          }
      }
  
      @Override
      protected void onSaveInstanceState(Bundle outState) {
          super.onSaveInstanceState(outState);
          String currentTabTag = mTabHost.getCurrentTabTag();
          if (currentTabTag != null) {
              outState.putString("currentTab", currentTabTag);
          }
      }
  
      /**
       * Updates the screen state (current list and other views) when the
       * content changes.
       * 
       *@see Activity#onContentChanged()
       */
      @Override
      public void onContentChanged() {
          super.onContentChanged();
          mTabHost = findViewById(com.android.internal.R.id.tabhost);
  
          if (mTabHost == null) {
              throw new RuntimeException(
                      "Your content must have a TabHost whose id attribute is " +
                      "'android.R.id.tabhost'");
          }
          mTabHost.setup(getLocalActivityManager());
      }
  
      private void ensureTabHost() {
          if (mTabHost == null) {
              this.setContentView(com.android.internal.R.layout.tab_content);
          }
      }
  
      @Override
      protected void
      onChildTitleChanged(Activity childActivity, CharSequence title) {
          // Dorky implementation until we can have multiple activities running.
          if (getLocalActivityManager().getCurrentActivity() == childActivity) {
              View tabView = mTabHost.getCurrentTabView();
              if (tabView != null && tabView instanceof TextView) {
                  ((TextView) tabView).setText(title);
              }
          }
      }
  
      /**
       * Returns the {@link TabHost} the activity is using to host its tabs.
       *
       * @return the {@link TabHost} the activity is using to host its tabs.
       */
      public TabHost getTabHost() {
          ensureTabHost();
          return mTabHost;
      }
  
      /**
       * Returns the {@link TabWidget} the activity is using to draw the actual tabs.
       *
       * @return the {@link TabWidget} the activity is using to draw the actual tabs.
       */
      public TabWidget getTabWidget() {
          return mTabHost.getTabWidget();
      }
  }
  