title: How to Add layouts to navigation Drawer?
body: <p>I Created a Navigation Drawer project from Android Studio. Now I want to add a linear layout to my navigation Drawer. So i Added it. But it shows a Error like this </p>
  
  <pre><code>java.lang.RuntimeException: Unable to start activity ComponentInfo{com.arul.anatotion/com.arul.anatotion.Navigation}: android.view.InflateException: Binary XML file line #28: Error inflating class fragment
              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
              at android.app.ActivityThread.access$800(ActivityThread.java:135)
              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
              at android.os.Handler.dispatchMessage(Handler.java:102)
              at android.os.Looper.loop(Looper.java:136)
              at android.app.ActivityThread.main(ActivityThread.java:5017)
              at java.lang.reflect.Method.invokeNative(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:515)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
              at dalvik.system.NativeStart.main(Native Method)
       Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class fragment
              at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
              at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
              at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
              at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
              at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
              at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
              at android.app.Activity.setContentView(Activity.java:1929)
              at com.arul.anatotion.Navigation.onCreate(Navigation.java:38)
              at android.app.Activity.performCreate(Activity.java:5231)
              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
              at android.app.ActivityThread.access$800(ActivityThread.java:135)
              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
              at android.os.Handler.dispatchMessage(Handler.java:102)
              at android.os.Looper.loop(Looper.java:136)
              at android.app.ActivityThread.main(ActivityThread.java:5017)
              at java.lang.reflect.Method.invokeNative(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:515)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
              at dalvik.system.NativeStart.main(Native Method)
       Caused by: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.ListView
              at com.arul.anatotion.NavigationDrawerFragment.onCreateView(NavigationDrawerFragment.java:92)
              at android.app.Fragment.performCreateView(Fragment.java:1700)
              at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866)
              at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040)
              at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1142)
              at android.app.Activity.onCreateView(Activity.java:4786)
              at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
              at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
              at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
              at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
              at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
              at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
              at android.app.Activity.setContentView(Activity.java:1929)
              at com.arul.anatotion.Navigation.onCreate(Navigation.java:38)
              at android.app.Activity.performCreate(Activity.java:5231)
              at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
              at android.app.ActivityThread.access$800(ActivityThread.java:135)
              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
              at android.os.Handler.dispatchMessage(Handler.java:102)
              at android.os.Looper.loop(Looper.java:136)
              at android.app.ActivityThread.main(ActivityThread.java:5017)
              at java.lang.reflect.Method.invokeNative(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:515)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
              at dalvik.system.NativeStart.main(Native Method)
  </code></pre>
  
  <p>on <strong>NavigationDrawerFragment</strong></p>
  
  <p>I referred this answer  but it is of no use <a href="https://stackoverflow.com/questions/24740806/add-edittext-on-navigation-drawer-android">Add EditText on Navigation Drawer Android</a> </p>
  
  <p><strong>fragment_navigation Drawer</strong></p>
  
  <pre><code>&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical" android:layout_width="match_parent"
      android:layout_height="match_parent"&gt;
  
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical" android:layout_width="match_parent"
      android:layout_height="match_parent"&gt;
  
  
      &lt;ImageView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/imageView"
          android:src="@drawable/ic_launcher"/&gt;
  
      &lt;TextView
          android:id="@+id/section_label"
  
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/app_name"
          android:layout_marginTop="20dp"
          android:layout_marginLeft="20dp"
          android:textStyle="bold" /&gt;
  
  &lt;/LinearLayout&gt;
  
  &lt;ListView xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:choiceMode="singleChoice"
      android:divider="#FFFFFF"
      android:dividerHeight="0dp"
      tools:context=".NavigationDrawerFragment" /&gt;
  
      &lt;/LinearLayout&gt;
  </code></pre>
  
  <p><strong>NavigationDrawerFragment</strong></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 callbacks 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_section1),
                      getString(R.string.title_section2),
                      getString(R.string.title_section3),
              }));
      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().invalidateOptionsMenu(); // 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).apply();
              }
  
              getActivity().invalidateOptionsMenu(); // 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);
      }
      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(), "Example action.", 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 getActivity().getActionBar();
  }
  
  /**
   * 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>Navigation .java</p>
  
  <pre><code>public class Navigation extends Activity
          implements HomeFragment.OnFragmentInteractionListener, NavigationDrawerFragment.NavigationDrawerCallbacks, NewsFragment.OnFragmentInteractionListener{
      @Override
      public void onFragmentInteraction(Uri uri) {
  
      }
  
      /**
       * Fragment managing the behaviors, 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_navigation);
          mNavigationDrawerFragment = (NavigationDrawerFragment)getFragmentManager().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) {
          // update the main content by replacing fragments
  
          FragmentManager fragmentManager = getFragmentManager();
  
          switch(position){
              case 0:
                  HomeFragment homeFragment = new HomeFragment();
                  fragmentManager.beginTransaction().replace(R.id.container, HomeFragment.newInstance("",""))
                  .commit();
  //                Toast.makeText(getApplicationContext(),"Entered",Toast.LENGTH_LONG).show();
                  break;
              case 1:
                  NewsFragment newsFragment = new NewsFragment();
                  fragmentManager.beginTransaction()
                  .replace(R.id.container, NewsFragment.newInstance("",""))
                  .commit();
  //                Toast.makeText(getApplicationContext(),"Entered",Toast.LENGTH_LONG).show();
                  break;
              case 2:
                  Intent intent= new Intent(this,PlayerActivity.class);
                  startActivity(intent);
  
          }
  
  //        fragmentManager.beginTransaction()
  //                .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
  //                .commit();
      }
  
      public void onSectionAttached(int number) {
          switch (number) {
              case 1:
                  mTitle = getString(R.string.title_section1);
                  break;
              case 2:
                  mTitle = getString(R.string.title_section2);
                  break;
              case 3:
                  mTitle = getString(R.string.title_section3);
                  break;
          }
      }
  
      public void restoreActionBar() {
          ActionBar actionBar = getActionBar();
          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.navigation, 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_navigation, container, false);
              return rootView;
          }
  
          @Override
          public void onAttach(Activity activity) {
              super.onAttach(activity);
              ((Navigation) activity).onSectionAttached(
                      getArguments().getInt(ARG_SECTION_NUMBER));
          }
      }
  
  }
  </code></pre>