title: Replace one fragment to another fragment in the TabHost
body: <p>I am creating a five tabs that contains one fragment each.
  I am using ListView in the first tab and in the ListView <code>OnItemClickListener</code> I want to replace from the first Tab Fragment to second tab Fragment. 
  How can I do that by using <code>Fragment</code> and <code>TabHost</code>?
  I extends <code>Fragment</code> for main class and all fragment classes. I am not extends <code>FragmentActivity</code>. So how can I change the tab from one fragment to another fragment?</p>
  
  <p>MainClass:</p>
  
  <pre><code>public class TabsFragment extends Fragment implements OnTabChangeListener {
  
      private View mRoot;
      public TabHost mTabHost;
      private int mCurrentTab;
  
      @Override
      public void onAttach(Activity activity) {
          super.onAttach(activity);
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
          mRoot = inflater.inflate(R.layout.tabs_fragment, null);
          mTabHost = (TabHost) mRoot.findViewById(android.R.id.tabhost);
          setupTabs();
          return mRoot;
      }
  
      @Override
      public void onActivityCreated(Bundle savedInstanceState) {
          super.onActivityCreated(savedInstanceState);
          setRetainInstance(true);
  
          mTabHost.setOnTabChangedListener(this);
          mTabHost.setCurrentTab(mCurrentTab);
          // manually start loading stuff in the first tab
          updateTab("1");
      }
  
      private void setupTabs() {
          mTabHost.setup(); // important!
          mTabHost.addTab(newTab("1", R.drawable.fragment1, R.id.fragment1));
          mTabHost.addTab(newTab("2", R.drawable.fragment2, R.id.fragment2));
          mTabHost.addTab(newTab("3", R.drawable.fragment3, R.id.fragment3));
          mTabHost.addTab(newTab("4", R.drawable.fragment4, R.id.fragment4));
          mTabHost.addTab(newTab("5", R.drawable.fragment5, R.id.fragment5));
      }
  
      private TabSpec newTab(String tag, int labelId, int tabContentId) {
          Log.d(TAG, "buildTab(): tag=" + tag);
  
          View indicator = LayoutInflater.from(getActivity()).inflate(
                  R.layout.tab,
                  (ViewGroup) mRoot.findViewById(android.R.id.tabs), false);
          ((ImageView) indicator.findViewById(R.id.imageView1)).setImageResource(labelId);
          TabSpec tabSpec = mTabHost.newTabSpec(tag);
          tabSpec.setIndicator(indicator);
          tabSpec.setContent(tabContentId);
          return tabSpec;
      }
  
      @Override
      public void onTabChanged(String tabId) {
          updateTab(tabId);
          mCurrentTab = Integer.valueOf(tabId) - 1;
      }
  
      private void updateTab(String tabId) {
          FragmentManager fm = getFragmentManager();
  
          if (fm.findFragmentByTag(tabId) == null) {
              if (tabId.equals("1"))
                   fm.beginTransaction().replace(R.id.fragment1, new Fragment1(), tabId).commit();
              else if (tabId.equals("2"))
                  fm.beginTransaction().replace(R.id.fragment2, new Fragment2(), tabId).commit();
              else if (tabId.equals("3"))
                  fm.beginTransaction().replace(R.id.fragment3, new Fragment3(), tabId).commit();
              else if (tabId.equals("4"))
                  fm.beginTransaction().replace(R.id.fragment4, new Fragment4(), tabId).commit();
              else if (tabId.equals("5"))
                  fm.beginTransaction().replace(R.id.fragment5, new Fragment5(), tabId).commit();
          }
      }
  }
  </code></pre>
  
  <p>Fragment1:</p>
  
  <pre><code>public class Fragment1 extends Fragment implements  OnItemClickListener {
      ListView listView;
      View theView;
  
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
  
          theView = inflater.inflate(R.layout.fragment1, container, false);
          listView = (ListView)theView.findViewById(R.id.list);
          listView.setOnItemClickListener(this);
          return theView;
  
      }
  
      public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
  
          // Here I want to switch from 1st Tab(Fragment1) to 2nd Tab(Fragment2)
          // How can I switch from 1st tab to 2nd tab here???
          // Below code is not worked for me.
  
          Fragment2 newFragment = new Fragment2();
          FragmentTransaction transaction = getFragmentManager().beginTransaction();
          transaction.replace(R.id.map, newFragment);
          transaction.commit();
      }
  }
  </code></pre>
  
  <p>Fragment2:</p>
  
  <pre><code>public class Fragment2 extends SupportMapFragment {
      private LatLng mPosFija = new LatLng(37.878901,-4.779396);
      GoogleMap mapView;
      public Fragment2() {
          super();
      }
  
      public static Fragment2 newInstance(LatLng posicion) {
          Fragment2 frag = new Fragment2();
          frag.mPosFija = posicion;
          return frag;
      }
      @Override
      public void onResume() {
        super.onResume();
        initMap();
      }
  
      @Override
      public void onCreate(Bundle arg0) {
          super.onCreate(arg0);
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
          View view = super.onCreateView(inflater, container, savedInstanceState);
          view = inflater.inflate(R.layout.fragment2, container, false);
          view.setId(getId());
          SupportMapFragment fm = (SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.mapview);
          mapView = fm.getMap();
          initMap();
          return view;
      }
  
      private void initMap() {
          UiSettings settings = mapView.getUiSettings();
          settings.setAllGesturesEnabled(true);
          settings.setMyLocationButtonEnabled(true);
          mapView.addMarker(new MarkerOptions().position(mPosFija).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)));
      }
  }
  </code></pre>