title: How to navigate to different activities through the navigation drawer
body: <p>I have a problem in which I know how to add a navigation drawer. However, I do not know how to link my activities with it e.g. if I click the help button on my navigation drawer how do I take it to the help page?</p>
  
  <p>This is my MainActivity:</p>
  
  <pre><code>public class MainActivity extends ActionBarActivity implements
      NavigationDrawerFragment.NavigationDrawerCallbacks {
  
  /**
   * Fragment managing the behaviours, interactions and presentation of the
   * navigation drawer.
   */
  private NavigationDrawerFragment mNavigationDrawerFragment;
  
  /**
   * Used to store the last screen title. For use in
   * {@link #restoreActionBar()}.
   */
  private CharSequence mTitle;
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  
  
      mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager()
              .findFragmentById(R.id.navigation_drawer);
      mTitle = getTitle();
  
      // Set up the drawer.
      mNavigationDrawerFragment.setUp(R.id.navigation_drawer,
              (DrawerLayout) findViewById(R.id.drawer_layout));
  }
  
  @Override
  public void onNavigationDrawerItemSelected(int position) {
  
      switch (position) {
      case 0: {
          Intent intent = new Intent(MainActivity.this, Bmi.class);
          startActivity(intent);
          break;
      }
      case 1:{
          Intent intent = new Intent(MainActivity.this, CC.class);
          startActivity(intent);
          break;
      }
      case 2:{
          // if this position is to add fragment 
          FragmentManager fragmentManager = getSupportFragmentManager();
  fragmentManager
          .beginTransaction()
          .replace(R.id.container,
                  PlaceholderFragment.newInstance(position + 1)).commit();
          break;
      }
      default:
          break;        
  
      } 
    }
  
  
  
  public void onSectionAttached(int number) {
      switch (number) {
      case 1:
          mTitle = getString(R.string.title_BMI);
          break;
      case 2:
          mTitle = getString(R.string.title_CC);
          break;
      case 3:
          mTitle = getString(R.string.title_W2E);
          break;
      case 4:
          mTitle = getString(R.string.title_FC);
          break;
      case 5:
          mTitle = getString(R.string.title_FB);
          break;
      case 6:
          mTitle = getString(R.string.title_LOG);
          break;
      }
  }
  
  
  
  public void restoreActionBar() {
      ActionBar actionBar = getSupportActionBar();
      actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
      actionBar.setDisplayShowTitleEnabled(true);
      actionBar.setTitle(mTitle);
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      if (!mNavigationDrawerFragment.isDrawerOpen()) {
          // Only show items in the action bar relevant to this screen
          // if the drawer is not showing. Otherwise, let the drawer
          // decide what to show in the action bar.
          getMenuInflater().inflate(R.menu.main, menu);
          restoreActionBar();
          return true;
      }
      return super.onCreateOptionsMenu(menu);
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      int id = item.getItemId();
      if (id == R.id.action_settings) {
          return true;
      }
      return super.onOptionsItemSelected(item);
  }
  
  /**
   * A placeholder fragment containing a simple view.
   */
  public static class PlaceholderFragment extends Fragment {
      /**
       * The fragment argument representing the section number for this
       * fragment.
       */
      private static final String ARG_SECTION_NUMBER = "section_number";
  
      /**
       * Returns a new instance of this fragment for the given section number.
       */
      public static PlaceholderFragment newInstance(int sectionNumber) {
          PlaceholderFragment fragment = new PlaceholderFragment();
          Bundle args = new Bundle();
          args.putInt(ARG_SECTION_NUMBER, sectionNumber);
          fragment.setArguments(args);
          return fragment;
      }
  
      public PlaceholderFragment() {
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
          View rootView = inflater.inflate(R.layout.fragment_main, container,
                  false);
          TextView textView = (TextView) rootView
                  .findViewById(R.id.section_label);
          textView.setText(Integer.toString(getArguments().getInt(
                  ARG_SECTION_NUMBER)));
          return rootView;
      }
  
      @Override
      public void onAttach(Activity activity) {
          super.onAttach(activity);
          ((MainActivity) activity).onSectionAttached(getArguments().getInt(
                  ARG_SECTION_NUMBER));
      }
  }
  
    }
  </code></pre>
  
  <p><br>
  and this is my navigation drawer fragment
  <br></p>
  
  <pre><code>public class NavigationDrawerFragment extends Fragment {
  
  /**
   * Remember the position of the selected item.
   */
  private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
  
  /**
   * Per the design guidelines, you should show the drawer on launch until the user manually
   * expands it. This shared preference tracks this.
   */
  private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned";
  
  /**
   * A pointer to the current callback instance (the Activity).
   */
  private NavigationDrawerCallbacks mCallbacks;
  
  /**
   * Helper component that ties the action bar to the navigation drawer.
   */
  private ActionBarDrawerToggle mDrawerToggle;
  
  private DrawerLayout mDrawerLayout;
  private ListView mDrawerListView;
  private View mFragmentContainerView;
  
  private int mCurrentSelectedPosition = 0;
  private boolean mFromSavedInstanceState;
  private boolean mUserLearnedDrawer;
  
  public NavigationDrawerFragment() {
  }
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
      // Read in the flag indicating whether or not the user has demonstrated awareness of the
      // drawer. See PREF_USER_LEARNED_DRAWER for details.
      SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
      mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false);
  
      if (savedInstanceState != null) {
          mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
          mFromSavedInstanceState = true;
      }
  
      // Select either the default item (0) or the last selected item.
      selectItem(mCurrentSelectedPosition);
  }
  
  @Override
  public void onActivityCreated (Bundle savedInstanceState) {
      super.onActivityCreated(savedInstanceState);
      // Indicate that this fragment would like to influence the set of actions in the action bar.
      setHasOptionsMenu(true);
  }
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
          Bundle savedInstanceState) {
      mDrawerListView = (ListView) inflater.inflate(
              R.layout.fragment_navigation_drawer, container, false);
      mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
              selectItem(position);
          }
      });
      mDrawerListView.setAdapter(new ArrayAdapter&lt;String&gt;(
              getActionBar().getThemedContext(),
              android.R.layout.simple_list_item_1,
              android.R.id.text1,
              new String[]{
                      getString(R.string.title_BMI),
                      getString(R.string.title_CC),
                      getString(R.string.title_W2E),
                      getString(R.string.title_FC),
                      getString(R.string.title_FB),
                      getString(R.string.title_LOG),
              }));
      mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
      return mDrawerListView;
  }
  
  public boolean isDrawerOpen() {
      return mDrawerLayout != null &amp;&amp; mDrawerLayout.isDrawerOpen(mFragmentContainerView);
  }
  
  /**
   * Users of this fragment must call this method to set up the navigation drawer interactions.
   *
   * @param fragmentId   The android:id of this fragment in its activity's layout.
   * @param drawerLayout The DrawerLayout containing this fragment's UI.
   */
  public void setUp(int fragmentId, DrawerLayout drawerLayout) {
      mFragmentContainerView = getActivity().findViewById(fragmentId);
      mDrawerLayout = drawerLayout;
  
      // set a custom shadow that overlays the main content when the drawer opens
      mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
      // set up the drawer's list view with items and click listener
  
      ActionBar actionBar = getActionBar();
      actionBar.setDisplayHomeAsUpEnabled(true);
      actionBar.setHomeButtonEnabled(true);
  
      // ActionBarDrawerToggle ties together the the proper interactions
      // between the navigation drawer and the action bar app icon.
      mDrawerToggle = new ActionBarDrawerToggle(
              getActivity(),                    /* host Activity */
              mDrawerLayout,                    /* DrawerLayout object */
              R.drawable.ic_drawer,             /* nav drawer image to replace 'Up' caret */
              R.string.navigation_drawer_open,  /* "open drawer" description for accessibility */
              R.string.navigation_drawer_close  /* "close drawer" description for accessibility */
      ) {
          @Override
          public void onDrawerClosed(View drawerView) {
              super.onDrawerClosed(drawerView);
              if (!isAdded()) {
                  return;
              }
  
              getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
          }
  
          @Override
          public void onDrawerOpened(View drawerView) {
              super.onDrawerOpened(drawerView);
              if (!isAdded()) {
                  return;
              }
  
              if (!mUserLearnedDrawer) {
                  // The user manually opened the drawer; store this flag to prevent auto-showing
                  // the navigation drawer automatically in the future.
                  mUserLearnedDrawer = true;
                  SharedPreferences sp = PreferenceManager
                          .getDefaultSharedPreferences(getActivity());
                  sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).commit();
              }
  
              getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
          }
      };
  
      // If the user hasn't 'learned' about the drawer, open it to introduce them to the drawer,
      // per the navigation drawer design guidelines.
      if (!mUserLearnedDrawer &amp;&amp; !mFromSavedInstanceState) {
          mDrawerLayout.openDrawer(mFragmentContainerView);
      }
  
      // Defer code dependent on restoration of previous instance state.
      mDrawerLayout.post(new Runnable() {
          @Override
          public void run() {
              mDrawerToggle.syncState();
          }
      });
  
      mDrawerLayout.setDrawerListener(mDrawerToggle);
  }
  
  private void selectItem(int position) {
      mCurrentSelectedPosition = position;
      if (mDrawerListView != null) {
          mDrawerListView.setItemChecked(position, true);
      }
      if (mDrawerLayout != null) {
          mDrawerLayout.closeDrawer(mFragmentContainerView);
      }
      // for the numbers bottom code fix now
      if (mCallbacks != null) {
          mCallbacks.onNavigationDrawerItemSelected(position);
      }
  }
  
  @Override
  public void onAttach(Activity activity) {
      super.onAttach(activity);
      try {
          mCallbacks = (NavigationDrawerCallbacks) activity;
      } catch (ClassCastException e) {
          throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");
      }
  }
  
  @Override
  public void onDetach() {
      super.onDetach();
      mCallbacks = null;
  }
  
  @Override
  public void onSaveInstanceState(Bundle outState) {
      super.onSaveInstanceState(outState);
      outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);
  }
  
  @Override
  public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      // Forward the new configuration the drawer toggle component.
      mDrawerToggle.onConfigurationChanged(newConfig);
  }
  
  @Override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
      // If the drawer is open, show the global app actions in the action bar. See also
      // showGlobalContextActionBar, which controls the top-left area of the action bar.
      if (mDrawerLayout != null &amp;&amp; isDrawerOpen()) {
          inflater.inflate(R.menu.global, menu);
          showGlobalContextActionBar();
      }
      super.onCreateOptionsMenu(menu, inflater);
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      if (mDrawerToggle.onOptionsItemSelected(item)) {
          return true;
      }
  
      if (item.getItemId() == R.id.action_example) {
          Toast.makeText(getActivity(), "Dont Forget To Rate The App", Toast.LENGTH_SHORT).show();
          return true;
      }
  
      return super.onOptionsItemSelected(item);
  }
  
  /**
   * Per the navigation drawer design guidelines, updates the action bar to show the global app
   * 'context', rather than just what's in the current screen.
   */
  private void showGlobalContextActionBar() {
      ActionBar actionBar = getActionBar();
      actionBar.setDisplayShowTitleEnabled(true);
      actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
      actionBar.setTitle(R.string.app_name);
  }
  
  private ActionBar getActionBar() {
      return ((ActionBarActivity) getActivity()).getSupportActionBar();
  }
  
  /**
   * Callbacks interface that all activities using this fragment must implement.
   */
  public static interface NavigationDrawerCallbacks {
      /**
       * Called when an item in the navigation drawer is selected.
       */
      void onNavigationDrawerItemSelected(int position);
  }
  </code></pre>
  
  <p>}</p>