title: LinearLayout@422725b0 is not a sliding drawer
body: <p>Hi I have been going crazy with this.</p>
  
  <p>There are several questions out there but none have seems to fix my problem.
  I am getting an error when ever I try to style a drawer layout.</p>
  
  <pre><code>&lt;android.support.v4.widget.DrawerLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/drawer_layout"
  android:layout_width="match_parent"
  android:layout_height="match_parent"&gt;
  
  &lt;!-- As the main content view, the view below consumes the entire
       space available using match_parent in both dimensions. --&gt;
  &lt;FrameLayout
      android:id="@+id/content_frame"
      android:layout_width="match_parent"
      android:layout_height="match_parent" /&gt;
  
  &lt;LinearLayout
      android:id="@+id/left_drawer"
      android:layout_width="240dp"
      android:layout_height="match_parent" 
      android:gravity="start"
      &gt;
  
      &lt;TextView
          android:layout_height="wrap_content"
          android:layout_width="match_parent"
          android:text="test"
          android:background="@drawable/black"
          android:textColor="#94A1A1"
          android:textAppearance="?android:attr/textAppearanceListItemSmall"
          android:minHeight="?android:attr/listPreferredItemHeightSmall"  
          android:layout_weight="1"      
      /&gt;  
  
      &lt;ListView
          android:id="@+id/left_drawer_child"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:choiceMode="singleChoice"
          android:divider="@android:color/transparent"
          android:dividerHeight="0dp"
          android:background="#323232"
          android:layout_weight="1"
      /&gt;
  
   &lt;/LinearLayout&gt;
  &lt;/android.support.v4.widget.DrawerLayout&gt;
  </code></pre>
  
  <p>and the Java</p>
  
  <pre><code>/*
   * Copyright 2013 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 com.example.drawertest;
  
  import java.util.Locale;
  
  import android.app.Activity;
  import android.app.Fragment;
  import android.app.FragmentManager;
  import android.app.SearchManager;
  import android.content.Intent;
  import android.content.res.Configuration;
  import android.graphics.drawable.Drawable;
  import android.os.Bundle;
  import android.support.v4.app.ActionBarDrawerToggle;
  import android.support.v4.view.GravityCompat;
  import android.support.v4.widget.DrawerLayout;
  import android.view.LayoutInflater;
  import android.view.Menu;
  import android.view.MenuInflater;
  import android.view.MenuItem;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.AdapterView;
  import android.widget.ArrayAdapter;
  import android.widget.ImageView;
  import android.widget.LinearLayout;
  import android.widget.ListView;
  import android.widget.TextView;
  import android.widget.Toast;
  
  /**
   * This example illustrates a common usage of the DrawerLayout widget
   * in the Android support library.
   * &lt;p/&gt;
   * &lt;p&gt;When a navigation (left) drawer is present, the host activity should detect presses of
   * the action bar's Up affordance as a signal to open and close the navigation drawer. The
   * ActionBarDrawerToggle facilitates this behavior.
   * Items within the drawer should fall into one of two categories:&lt;/p&gt;
   * &lt;p/&gt;
   * &lt;ul&gt;
   * &lt;li&gt;&lt;strong&gt;View switches&lt;/strong&gt;. A view switch follows the same basic policies as
   * list or tab navigation in that a view switch does not create navigation history.
   * This pattern should only be used at the root activity of a task, leaving some form
   * of Up navigation active for activities further down the navigation hierarchy.&lt;/li&gt;
   * &lt;li&gt;&lt;strong&gt;Selective Up&lt;/strong&gt;. The drawer allows the user to choose an alternate
   * parent for Up navigation. This allows a user to jump across an app's navigation
   * hierarchy at will. The application should treat this as it treats Up navigation from
   * a different task, replacing the current task stack using TaskStackBuilder or similar.
   * This is the only form of navigation drawer that should be used outside of the root
   * activity of a task.&lt;/li&gt;
   * &lt;/ul&gt;
   * &lt;p/&gt;
   * &lt;p&gt;Right side drawers should be used for actions, not navigation. This follows the pattern
   * established by the Action Bar that navigation should be to the left and actions to the right.
   * An action should be an operation performed on the current contents of the window,
   * for example enabling or disabling a data overlay on top of the current content.&lt;/p&gt;
   */
  
  
  public class MainActivity extends Activity {
      private DrawerLayout mDrawerLayout;
      private ListView mDrawerList;
      private ActionBarDrawerToggle mDrawerToggle;
      private LinearLayout linearLayout;
  
      private CharSequence mDrawerTitle;
      private CharSequence mTitle;
      private String[] mPlanetTitles;
      public TextView title;
      public int theme = 1;
      public int theme2 = 1;
      public Drawable background = null;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          if(theme == 1){
         setTheme(R.style.CustomActionBarTheme);
          } else {
              setTheme(R.style.CustomActionBarBlueTheme);
          }
          setContentView(R.layout.activity_main);
  
          mTitle = mDrawerTitle = getTitle();
          mPlanetTitles = getResources().getStringArray(R.array.planets_array);
          mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
          mDrawerList = (ListView) findViewById(R.id.left_drawer_child);
          linearLayout = (LinearLayout)findViewById(R.id.left_drawer);
  
          // 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
          mDrawerList.setAdapter(new ArrayAdapter&lt;String&gt;(this,
                  R.layout.drawer_list_item, mPlanetTitles));
          mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
  
          // enable ActionBar app icon to behave as action to toggle nav drawer
          getActionBar().setDisplayHomeAsUpEnabled(true);
          getActionBar().setHomeButtonEnabled(true);
  
          // ActionBarDrawerToggle ties together the the proper interactions
          // between the sliding drawer and the action bar app icon
          mDrawerToggle = new ActionBarDrawerToggle(
                  this,                  /* host Activity */
                  mDrawerLayout,         /* DrawerLayout object */
                  R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
                  R.string.drawer_open,  /* "open drawer" description for accessibility */
                  R.string.drawer_close  /* "close drawer" description for accessibility */
                  ) {
              public void onDrawerClosed(View view) {
                  getActionBar().setTitle(mTitle);
                  invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
                  getActionBar().setBackgroundDrawable(background);
              }
  
              public void onDrawerOpened(View drawerView) {
                 // getActionBar().setTitle(mDrawerTitle);
                  invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
  
              }
          };
          mDrawerLayout.setDrawerListener(mDrawerToggle);
  
          if (savedInstanceState == null) {
              selectItem(0);
          }
  
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.main, menu);
          return super.onCreateOptionsMenu(menu);
      }
  
      /* Called whenever we call invalidateOptionsMenu() */
      @Override
      public boolean onPrepareOptionsMenu(Menu menu) {
          // If the nav drawer is open, hide action items related to the content view
          boolean drawerOpen = mDrawerLayout.isDrawerOpen(linearLayout);
          menu.findItem(R.id.action_websearch).setVisible(!drawerOpen);
          return super.onPrepareOptionsMenu(menu);
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
           // The action bar home/up action should open or close the drawer.
           // ActionBarDrawerToggle will take care of this.
          if (mDrawerToggle.onOptionsItemSelected(item)) {
  
              return true;
          }
          // Handle action buttons
          switch(item.getItemId()) {
          case R.id.action_websearch:
              // create intent to perform web search for this planet
              Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
              intent.putExtra(SearchManager.QUERY, getActionBar().getTitle());
              // catch event that there's no activity to handle intent
              if (intent.resolveActivity(getPackageManager()) != null) {
                  startActivity(intent);
              } else {
                  Toast.makeText(this, R.string.app_not_available, Toast.LENGTH_LONG).show();
              }
              return true;
          default:
              return super.onOptionsItemSelected(item);
          }
      }
  
      /* The click listner for ListView in the navigation drawer */
      private class DrawerItemClickListener implements ListView.OnItemClickListener {
          @Override
          public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
              updatebackground(view,position);
              selectItem(position);
          }
      }
      private void updatebackground(View view,int position) {
          // update the main content by replacing fragments
          int right = view.getPaddingRight();
          int left = view.getPaddingLeft();
          int top = view.getPaddingTop();
          int bottom = view.getPaddingBottom();
          switch(position) {
          case 0 : 
                   view.setBackgroundResource(R.drawable.redbackground);
                   background = getResources().getDrawable(R.drawable.red);
  
          break;
          case 1 : view.setBackgroundResource(R.drawable.bluebackground);
                   background = getResources().getDrawable(R.drawable.blue);
  
          break;
          case 2 : view.setBackgroundResource(R.drawable.brownbackground);
                   background = getResources().getDrawable(R.drawable.brown);
  
          break;
          case 3 : view.setBackgroundResource(R.drawable.greenbackground);
          background = getResources().getDrawable(R.drawable.green);
  
          break;
          case 4 : view.setBackgroundResource(R.drawable.orangebackground);
          background = getResources().getDrawable(R.drawable.orange);
  
          break;
          case 5 : view.setBackgroundResource(R.drawable.purplebackground);
          background = getResources().getDrawable(R.drawable.purple);
  
          break;
          case 6 : view.setBackgroundResource(R.drawable.pinkbackground);
          background = getResources().getDrawable(R.drawable.pink);
  
          break;
          case 7 : view.setBackgroundResource(R.drawable.yellowbackground);
          background = getResources().getDrawable(R.drawable.yellow);
  
          break;
          default: view.setBackgroundResource(R.drawable.blackbackground);
          background = getResources().getDrawable(R.drawable.black);
  
  
          }
          view.setPadding(left, top, right, bottom);
          getActionBar().setBackgroundDrawable(background);
      }
      private void selectItem(int position) {
          // update the main content by replacing fragments
          Fragment fragment = new PlanetFragment();
          Bundle args = new Bundle();
          args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
          fragment.setArguments(args);
  
          FragmentManager fragmentManager = getFragmentManager();
          fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
  
          // update selected item and title, then close the drawer
          mDrawerList.setItemChecked(position, true);
          setTitle(mPlanetTitles[position]);
          mDrawerLayout.closeDrawer(linearLayout);
  
      }
  
      @Override
      public void setTitle(CharSequence title) {
          mTitle = title;
          getActionBar().setTitle(mTitle);
          if(theme == 1){
              theme =2;
          }else {
              theme =1;
          }
  
      }
  
      /**
       * When using the ActionBarDrawerToggle, you must call it during
       * onPostCreate() and onConfigurationChanged()...
       */
  
      @Override
      protected void onPostCreate(Bundle savedInstanceState) {
          super.onPostCreate(savedInstanceState);
          // Sync the toggle state after onRestoreInstanceState has occurred.
          mDrawerToggle.syncState();
      }
  
      @Override
      public void onConfigurationChanged(Configuration newConfig) {
          super.onConfigurationChanged(newConfig);
          // Pass any configuration change to the drawer toggls
          mDrawerToggle.onConfigurationChanged(newConfig);
      }
  
      /**
       * Fragment that appears in the "content_frame", shows a planet
       */
      public static class PlanetFragment extends Fragment {
          public static final String ARG_PLANET_NUMBER = "planet_number";
  
          public PlanetFragment() {
              // Empty constructor required for fragment subclasses
          }
  
          @Override
          public View onCreateView(LayoutInflater inflater, ViewGroup container,
                  Bundle savedInstanceState) {
              View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
              int i = getArguments().getInt(ARG_PLANET_NUMBER);
              String planet = getResources().getStringArray(R.array.planets_array)[i];
  
              int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()),
                              "drawable", getActivity().getPackageName());
              ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId);
              getActivity().setTitle(planet);
              return rootView;
          }
      }
  }
  </code></pre>
  
  <p>The error I am getting is </p>
  
  <pre><code>11-27 00:56:56.545: E/AndroidRuntime(10000): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.drawertest/com.example.drawertest.MainActivity}: java.lang.IllegalArgumentException: View android.widget.LinearLayout@422725b0 is not a sliding drawer
  </code></pre>
  
  <p>Any help would be great thanks in advance</p>