title: How to navigate in fragments?
body: <p>So I am using Tabs and seeking for this kind of navigation:</p>
  
  <p>tab1 -- > inside 1 -- > inside2</p>
  
  <p>tab2 -- > inside 3 -- > inside 4</p>
  
  <p>tab3 -- > inside 5</p>
  
  <p>inside I mean that it should open a new layout and class.</p>
  
  <p>My project main class is this:</p>
  
  <pre><code>public class TabsFragmentActivity extends SherlockFragmentActivity implements
          TabHost.OnTabChangeListener {
  
      private TabHost mTabHost;
      private HashMap&lt;String, TabInfo&gt; mapTabInfo = new HashMap&lt;String, TabInfo&gt;();
      private TabInfo mLastTab = null;
      private static Context mContext;
  
      private class TabInfo {
          private String tag;
          private Class clss;
          private Bundle args;
          private Fragment fragment;
  
          TabInfo(String tag, Class clazz, Bundle args) {
              this.tag = tag;
              this.clss = clazz;
              this.args = args;
          }
      }
  
      class TabFactory implements TabContentFactory {
  
          private final Context mContext;
  
          public TabFactory(Context context) {
              mContext = context;
          }
  
          public View createTabContent(String tag) {
              View v = new View(mContext);
              v.setMinimumWidth(0);
              v.setMinimumHeight(0);
              return v;
          }
      }
  
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          // Step 1: Inflate layout
          setContentView(R.layout.tabs_fragment_activity);
  
          mContext = this;
  
          // Step 2: Setup TabHost
          initialiseTabHost(savedInstanceState);
  
          if (savedInstanceState != null) {
              mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab")); 
          }
  
          addNavaigationBar();
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          //Add Action item with title
              menu.add("some")
              .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
  
          return super.onCreateOptionsMenu(menu);
      }
  
      public void addNavaigationBar() {
          // Create Action Bar sherlock
          ActionBar navigation_bar = getSupportActionBar();
  
          // Setting standart navigation bar view
          navigation_bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
  
          navigation_bar.setDisplayShowTitleEnabled(true);
          navigation_bar.setTitle("Test");
  
          // Override Action items to navigation bar. Calls onCreateOptionsMenu
          // invalidateOptionsMenu();
      }
  
      protected void onSaveInstanceState(Bundle outState) {
          outState.putString("tab", mTabHost.getCurrentTabTag()); // save the tab
                                                                  // selected
          super.onSaveInstanceState(outState);
      }
  
      /**
       * Step 2: Setup TabHost
       */
      private void initialiseTabHost(Bundle args) {
          mTabHost = (TabHost) findViewById(android.R.id.tabhost);
  
          mTabHost.setup();
  
          TabInfo tabInfo = null;
  
          TabsFragmentActivity.addTab(this, this.mTabHost, this.mTabHost
                  .newTabSpec("Tab1").setIndicator("Tab 1"),
                  (tabInfo = new TabInfo("Tab1", Tab1Fragment.class, args)));
  
          this.mapTabInfo.put(tabInfo.tag, tabInfo);
  
  
          TabsFragmentActivity.addTab(this, this.mTabHost, this.mTabHost
                  .newTabSpec("Tab2").setIndicator("Tab 2"),
                  (tabInfo = new TabInfo("Tab2", Tab2Fragment.class, args)));
  
          this.mapTabInfo.put(tabInfo.tag, tabInfo);
  
          TabsFragmentActivity.addTab(this, this.mTabHost, this.mTabHost
                  .newTabSpec("Tab3").setIndicator("Tab 3"),
                  (tabInfo = new TabInfo("Tab3", Tab3Fragment.class, args)));
  
          this.mapTabInfo.put(tabInfo.tag, tabInfo);
          // Default to first tab
          this.onTabChanged("Tab1");
          //
          mTabHost.setOnTabChangedListener(this);
      }
  
      private static void addTab(TabsFragmentActivity activity, TabHost tabHost,
              TabHost.TabSpec tabSpec, TabInfo tabInfo) {
          // Attach a Tab view factory to the spec
          tabSpec.setContent(activity.new TabFactory(activity));
  
          String tag = tabSpec.getTag();
          //getTabWidget()
  
          View view = prepareTabView(activity, R.id.tab_bar_icon);
          tabSpec.setIndicator(view);
  
          // Check to see if we already have a fragment for this tab, probably
          // from a previously saved state. If so, deactivate it, because our
          // initial state is that a tab isn't shown.
          tabInfo.fragment = activity.getSupportFragmentManager().findFragmentByTag(tag);
  
          if (tabInfo.fragment != null &amp;&amp; !tabInfo.fragment.isDetached()) {
  
              FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
  
              ft.detach(tabInfo.fragment);
  
              ft.commit();
  
              activity.getSupportFragmentManager().executePendingTransactions();
          }
          tabHost.addTab(tabSpec);
      }
  
      private static View prepareTabView(Context context, int drawable){
          //inflate(R.layout.tab_indicator, android.R.id.tabs, false)
          View tabIndicator = LayoutInflater.from(context).inflate(R.layout.tab_indicator, null);
          ImageView icon = (ImageView) tabIndicator.findViewById(R.id.tab_bar_icon);
          icon.setImageResource(R.drawable.ic_launcher);
          return tabIndicator;
  
      }
  
      public void onTabChanged(String tag) {
          TabInfo newTab = this.mapTabInfo.get(tag);
  
          if (mLastTab != newTab) {
              FragmentTransaction ft = this.getSupportFragmentManager()
                      .beginTransaction();
              if (mLastTab != null) {
                  if (mLastTab.fragment != null) {
                      ft.detach(mLastTab.fragment);
                  }
              }
              if (newTab != null) {
                  if (newTab.fragment == null) {
                      newTab.fragment = Fragment.instantiate(this,
                              newTab.clss.getName(), newTab.args);
                      ft.add(R.id.realtabcontent, newTab.fragment, newTab.tag);
                  } else {
                      ft.attach(newTab.fragment);
                  }
              }
  
              mLastTab = newTab;
              ft.commit();
              this.getSupportFragmentManager().executePendingTransactions();
          }
      }
  
  }
  </code></pre>
  
  <p>This create 3 Tabs with there content. Here is how look Tab1 fragment class (other look similar) :</p>
  
  <pre><code>public class Tab1Fragment extends SherlockFragment {
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
          if (container == null) {
              // We have different layouts, and in one of them this
              // fragment's containing frame doesn't exist.  The fragment
              // may still be created from its saved state, but there is
              // no reason to try to create its view hierarchy because it
              // won't be displayed.  Note this is not needed -- we could
              // just run the code below, where we would create and return
              // the view hierarchy; it would just never be used.
              return null;
          }
          LinearLayout theLayout = (LinearLayout)inflater.inflate(R.layout.tab_frag1_layout, container, false);
          // Register for the Button.OnClick event
          Button b = (Button)theLayout.findViewById(R.id.frag1_button);
          b.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
  
  **//Here i want open a new window but don't change pressed tab and when press back it should go back at this window**
              }
          });
          return theLayout;
      }
  }
  </code></pre>
  
  <p>I write on button press what I want.</p>
  
  <p>I can't open a new fragment or activity inside this fragment ?</p>
  
  <p>How I should do navigation inside fragments ?</p>