title: ClassCastException android.widget.FrameLayout$LayoutParams to android.support.v4.widget.DrawerLayout$LayoutParams
body: <p>I'm working on the Navigation Drawer for Android.
  As per my requirement I was to display gridview and listview of items in the navigation drawer. I have created a linearLayout in the layout xml file and placed the two widgets(Grid view, and Listview) in the LinearLayout.</p>
  
  <p>When I run the file I'm getting the following error:</p>
  
  <p><strong>java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.navigationdrawer3/com.example.navigationdrawer3.MainActivity}: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams</strong></p>
  
  <p>Below are my java, logcat, and NavigationDrawer layout files:</p>
  
  <p><strong>MainActivity.java</strong></p>
  
  <pre><code>public class MainActivity extends Activity {
  
       private DrawerLayout mDrawerLayout;
          private ListView mDrawerList;
          private ActionBarDrawerToggle mDrawerToggle;
  
          private CharSequence mDrawerTitle;
          //@SuppressWarnings("unused")
          private CharSequence mTitle;
          private String[] mGalaxyTitles;
  
          private GridView mDrawerGrid;
  
          private LinearLayout mDrawerLinear;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          mTitle = mDrawerTitle = getTitle();
          mGalaxyTitles = getResources().getStringArray(R.array.items_array);
          mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
          mDrawerList = (ListView) findViewById(R.id.left_drawer);
  
          mDrawerGrid = (GridView)findViewById(R.id.gridview);
  
          mDrawerLinear =(LinearLayout)findViewById(R.id.linearLayout);
  
          mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
  
          mDrawerGrid.setAdapter(new ImageAdapter(MainActivity.this));
  
          mDrawerList.setAdapter(new ArrayAdapter&lt;String&gt;(this,
                  R.layout.drawer_list_item, mGalaxyTitles));
  
          mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
  
          getActionBar().setDisplayHomeAsUpEnabled(true);
          getActionBar().setHomeButtonEnabled(true);      
  
          mDrawerToggle = new ActionBarDrawerToggle(
                  this,                  
                  mDrawerLayout,         
                  R.drawable.ic_drawer,  
                  R.string.drawer_open,  
                  R.string.drawer_close  
                  ) {
              public void onDrawerClosed(View view) {
                  getActionBar().setTitle(mDrawerTitle);
                  invalidateOptionsMenu(); 
              }
  
              public void onDrawerOpened(View drawerView) {
                  getActionBar().setTitle(mDrawerTitle);
                  invalidateOptionsMenu(); 
              }
          };
          mDrawerLayout.setDrawerListener(mDrawerToggle);
  
          if (savedInstanceState == null) {
              selectItem(0);
          }
  
      }
  
      class DrawerItemClickListener implements ListView.OnItemClickListener {
  
          @Override
          public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position,
                  long id) {
              // TODO Auto-generated method stub
  
  switch(position){
  
              case 0:
                 menu0(); 
                  return;
              case 1:
                 menu1(); 
                  return;
              case 2:
                  menu2(); 
                   return;
              case 3:
                 menu3(); 
                  return;
              case 4:
                 menu4(); 
                  return;
              case 5:
                 menu5(); 
                  return;
              case 6:
                 menu6(); 
                  return;
              case 7:
                 menu7(); 
                  return;
              case 8:
                 menu8(); 
                  return;
          }
  
          }
  
  
          protected void menu0() {
              Intent Main0 = new Intent(MainActivity.this, Page0.class);
              startActivity(Main0);
                 return;
          }
  
          protected void menu1() {
              Intent Main1 = new Intent(MainActivity.this, Page1.class);
              startActivity(Main1);
                 return;
          }
  
          protected void menu2() {
                Intent Main2 = new Intent(MainActivity.this, Page2.class);
                startActivity(Main2);
             return;
      }
          protected void menu3() {
              Intent Main3 = new Intent(MainActivity.this, Page3.class);
              startActivity(Main3);
                 return;
          }
  
          protected void menu4() {
              Intent Main4 = new Intent(MainActivity.this, Page4.class);
              startActivity(Main4);
                 return;
          }
  
          protected void menu5() {
              Intent Main5 = new Intent(MainActivity.this, Page5.class);
              startActivity(Main5);
                 return;
          }
  
          protected void menu6() {
              Intent Main6 = new Intent(MainActivity.this, Page6.class);
              startActivity(Main6);
                 return;
          }
  
          protected void menu7() {
              Intent Main7 = new Intent(MainActivity.this, Page7.class);
              startActivity(Main7);
                 return;
          }
  
          protected void menu8() {
              Intent Main8 = new Intent(MainActivity.this, Page8.class);
              startActivity(Main8);
                 return;
          }
  
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.main, menu);
          return true;
      }
  
  
       @Override
          public void setTitle(CharSequence title) {
              mTitle = title;
              getActionBar().setTitle(mDrawerTitle);
          }
  
         @Override
          public boolean onPrepareOptionsMenu(Menu menu) {
             //boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
             //boolean drawerOpen2 = mDrawerLayout.isDrawerOpen(mDrawerGrid);
             boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerLayout);
              menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
              //menu.findItem(R.id.action_settings).setVisible(!drawerOpen2);
              return super.onPrepareOptionsMenu(menu);
          }
  
         @Override
          public boolean onOptionsItemSelected(MenuItem item) {
              if (mDrawerToggle.onOptionsItemSelected(item)) {
                  return true;
              }
  
              switch(item.getItemId()) {
              case R.id.action_settings:
                  setting();
  
                  return true;
  
              case R.id.about:
                  about();
  
                  return true;
              default:
                  return super.onOptionsItemSelected(item);
              }
          }
  
       private void about() {
          // TODO Auto-generated method stub
  
           Intent Main1 = new Intent(MainActivity.this, About.class);
              startActivity(Main1);
                 return;
  
      }
  
  
      private void setting() {
          // TODO Auto-generated method stub
          Intent Main1 = new Intent(MainActivity.this, Setting.class);
          startActivity(Main1);
             return;
  
      }
  
  
      private void selectItem(int position) {
  
  
              Fragment fragment = new GalaxyFragment();
              Bundle args = new Bundle();
              args.putInt(GalaxyFragment.ARG_GALAXY_NUMBER, position);
              fragment.setArguments(args);
  
              FragmentManager fragmentManager = getFragmentManager();
              fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
  
  
              mDrawerList.setItemChecked(position, true);
              setTitle(mGalaxyTitles[position]);
              mDrawerLayout.closeDrawer(mDrawerLayout);
              //mDrawerLayout.closeDrawer(mDrawerGrid);
          }
  
       class GalaxyFragment extends Fragment{
  
          public static final String ARG_GALAXY_NUMBER = "galaxy_number";
  
           public GalaxyFragment() {
  
              }
  
              @Override
              public View onCreateView(LayoutInflater inflater, ViewGroup container,
                      Bundle savedInstanceState) {
                  View rootView = inflater.inflate(R.layout.about, container, false);           
  
                  return rootView;
              }
  
       }
  
  
       //Gridview BaseAdapter class
  
       class ImageAdapter extends BaseAdapter{
              Context context;
  
          ImageAdapter(Context context){
                  this.context = context;
              }
  
  
              @Override
              public int getCount() {
                  // TODO Auto-generated method stub
                  return mThumbIds.length;
              }
  
              @Override
              public Object getItem(int arg0) {
                  // TODO Auto-generated method stub
                  return null;
              }
  
              @Override
              public long getItemId(int arg0) {
                  // TODO Auto-generated method stub
                  return 0;
              }
  
              @Override
              public View getView(int position, View convertView, ViewGroup parent) {
                  // TODO Auto-generated method stub
                  ImageView imageView;
  
                  if(convertView == null){
                      imageView = new ImageView(context);
                       imageView.setLayoutParams(new GridView.LayoutParams(25, 25));
                       imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                       imageView.setPadding(8, 8, 8, 8);
                  }else {
                      imageView = (ImageView) convertView;
                  }
                  imageView.setImageResource(mThumbIds[position]);
                  return imageView;
              }
  
               // references to our images
              private Integer[] mThumbIds = {
                      R.drawable.sample_2, R.drawable.sample_3,
                      R.drawable.sample_4, R.drawable.sample_5,
              };
  
          }
  
  }
  </code></pre>
  
  <p><strong>activity_main.xml</strong></p>
  
  <pre><code>&lt;android.support.v4.widget.DrawerLayout 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"
      tools:context=".MainActivity" 
      android:id="@+id/drawer_layout"&gt;
  
       &lt;FrameLayout
          android:id="@+id/content_frame"
          android:layout_width="match_parent"
          android:layout_height="match_parent" &gt;
      &lt;/FrameLayout&gt;
  
        &lt;LinearLayout
           android:id="@+id/linearLayout"
           android:layout_width="320dp"
           android:layout_height="match_parent"
           android:orientation="vertical" 
           android:layout_gravity="left"
          android:choiceMode="singleChoice"
          android:divider="@android:color/transparent"
          android:dividerHeight="0dp"
          android:background="#111"&gt;        
  
  
      &lt;GridView 
          android:id="@+id/gridview"
          android:layout_width="280dp"
          android:layout_height="match_parent"
          android:stretchMode="columnWidth"
          android:numColumns="auto_fit"/&gt;
         &lt;!--  android:gravity="center"   --&gt; 
      &lt;ListView
          android:id="@+id/left_drawer"
          android:layout_width="240dp"
          android:layout_height="match_parent"
          /&gt;
  
     &lt;/LinearLayout&gt;     
  
  &lt;/android.support.v4.widget.DrawerLayout&gt;
  </code></pre>
  
  <p><strong>logcat</strong></p>
  
  <pre><code>07-30 06:15:57.203: W/dalvikvm(853): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
  07-30 06:15:57.213: E/AndroidRuntime(853): FATAL EXCEPTION: main
  07-30 06:15:57.213: E/AndroidRuntime(853): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.navigationdrawer3/com.example.navigationdrawer3.MainActivity}: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.os.Handler.dispatchMessage(Handler.java:99)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.os.Looper.loop(Looper.java:137)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.app.ActivityThread.main(ActivityThread.java:5041)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at java.lang.reflect.Method.invokeNative(Native Method)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at java.lang.reflect.Method.invoke(Method.java:511)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at dalvik.system.NativeStart.main(Native Method)
  07-30 06:15:57.213: E/AndroidRuntime(853): Caused by: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:809)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.support.v4.widget.DrawerLayout.closeDrawer(DrawerLayout.java:1012)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at com.example.navigationdrawer3.MainActivity.selectItem(MainActivity.java:265)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at com.example.navigationdrawer3.MainActivity.onCreate(MainActivity.java:86)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.app.Activity.performCreate(Activity.java:5104)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
  07-30 06:15:57.213: E/AndroidRuntime(853):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
  07-30 06:15:57.213: E/AndroidRuntime(853):  ... 11 more
  </code></pre>
  
  <p>The line of code at line 86:</p>
  
  <pre><code>selectItem(0);
  </code></pre>
  
  <p>The line of code at line 265:</p>
  
  <pre><code>mDrawerLayout.closeDrawer(mDrawerLayout);
  </code></pre>
  
  <p>I have tried to correct this run time erroe in many ways but failed to correct. Can any one suggest a answer for my problem.</p>