ClassCastException android.widget de.FrameLayout$LayoutParams pour android.de soutien.v4.widget de.DrawerLayout$LayoutParams

Je suis en train de travailler sur le Tiroir de Navigation pour Android.
Conformément à ma demande, j'ai été à l'affichage gridview et listview d'éléments dans le tiroir de navigation. J'ai créé un linearLayout dans la mise en page du fichier xml et placé les deux widgets(affichage de la Grille, et Listview) dans le LinearLayout.

Quand je lance le fichier, je reçois le message d'erreur suivant:

java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo{com.exemple.navigationdrawer3/com.exemple.navigationdrawer3.MainActivity}: java.lang.ClassCastException: android.widget de.FrameLayout$LayoutParams ne peut pas être lancé pour android.de soutien.v4.widget de.DrawerLayout$LayoutParams

Ci-dessous sont mes java, logcat, et NavigationDrawer fichiers de mise en page:

MainActivity.java

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<String>(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<?> 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,
};
}
}

activity_main.xml

<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">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<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">        
<GridView 
android:id="@+id/gridview"
android:layout_width="280dp"
android:layout_height="match_parent"
android:stretchMode="columnWidth"
android:numColumns="auto_fit"/>
<!--  android:gravity="center"   --> 
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
/>
</LinearLayout>     
</android.support.v4.widget.DrawerLayout>

logcat

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

La ligne de code à la ligne 86:

selectItem(0);

La ligne de code à la ligne 265:

mDrawerLayout.closeDrawer(mDrawerLayout);

J'ai essayé de corriger ce moment de l'exécution erroe dans beaucoup de façons, mais pas réussi à corriger. Quelqu'un peut-il suggérer une réponse à mon problème.

  • erreur suggère que vous êtes de passage cadre de la mise en page à tiroir mise en page.
  • Alors comment faire pour y remédier. Suis-je censé supprimer Framelayout à partir du fichier de mise en page?
  • essayez mDrawerLayout.closeDrawer(mDrawerList);
  • Erreur. Mais il a changé maintenant, c'est l'affichage de java.lang.ClassCastException: android.widget de.LinearLayout$LayoutParams ne peut pas être lancé pour android.de soutien.v4.widget de.DrawerLayout$LayoutParams
  • Avez-vous passé le droit de mise en page pour la présentation de tiroir ?? vérifier à nouveau ce qu'il contient.
  • Bien sûr, j'ai l'impression que mon xml pour la Mise en Tiroir est correct. Je n'ai pas trouver d'éventuelles erreurs. Veuillez m'aviser si vous avez trouvé un....
  • Je veux dire dans CloseDrawer(mDrawerLayout). vérifier ce qu'il contient.
  • Mec. Merci pour m'aviser qu'il a travaillé.
  • Mais maintenant, l'affichage de la grille d'affichage, mais la vue liste n'est pas d'afficher des articles?
  • Vérifier avec les données est-il dans la vue liste ou pas?? et de voir aussi que listview peut avoir rejetées par gridview.
  • Bien sûr, les données sont là, dans la listview....Aussi comment peut-il obtenir rejetées avec gridview...
  • Si vous n'avez pas d'erreur signifie qu'il n'y a pas de données à la liste ou listview n'a pas correctement attribué avec adaptateur. donc, je ne pense pas qu'il peut y avoir un autre problème avec listview.

InformationsquelleAutor Seenu69 | 2013-07-30