ListViewを含むカスタムDrawerLayoutを作成しようとしているが、動作させることができない。 LinearLayoutのコンテンツをラップしてよりカスタムにし、ListViewの上にImageを追加する前に、それを動作させることができました。DrawerLayoutを閉じると例外が発生する:LinearLayoutをDrawerLayoutにキャストできない
linearLayoutを渡している間にcloseDrawer()を試行したときにこの例外が発生していますが、この種の問題については複数の投稿がありましたが、ほとんどの場合、LinearLayoutをcloseDrawer()関数、私はすでにやっている:ここで
04-05 12:17:10.100 18879-18879/com.plante.android.cobalt E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.plante.android.cobalt, PID: 18879
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.plante.android.cobalt/com.plante.android.cobalt.activityv2.ActivityHome}: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:1415)
at android.support.v4.widget.DrawerLayout.closeDrawer(DrawerLayout.java:1630)
at com.plante.android.cobalt.activityv2.ActivityHome.selectItem(ActivityHome.java:190)
at com.plante.android.cobalt.activityv2.ActivityHome.onCreate(ActivityHome.java:155)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
は私の活動である:ここでは
@Bind(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
@Bind(R.id.actionToolbar)
Toolbar toolbar;
@Bind(R.id.left_drawer_item)
LinearLayout mDrawerLinear;
@Bind(R.id.left_drawer_child)
ListView mDrawerListChild;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_v2_home);
ButterKnife.bind(this);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(getResources().getString(R.string.app_name));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mPlanTitles = getResources().getStringArray(R.array.plan_list);
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
// set up the drawer's list view with items and click listener
ArrayList<String> myList = new ArrayList<>();
myList.add("First Item");
myList.add("Second Item");
mDrawerListChild.setAdapter(new DrawerListAdapter(this, R.layout.drawer_layout_item, myList));
mDrawerListChild.setOnItemClickListener(new DrawerItemClickListener());
// enable ActionBar app icon to behave as action to toggle nav drawer
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
toolbar, /* 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) {
//syncActionBarArrowState();
}
public void onDrawerOpened(View drawerView) {
//mDrawerToggle.setDrawerIndicatorEnabled(true);
}
};
getSupportFragmentManager().addOnBackStackChangedListener(mOnBackStackChangedListener);
mDrawerLayout.setDrawerListener(mDrawerToggle);
setSupportActionBar(toolbar);
user = getUser();
if (savedInstanceState == null) {
selectItem(0);
}
}
private void selectItem(int position) {
BackHandledFragment fragment = new FragmentMobilePlan();
setSelectedFragment(fragment);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.pull_in_right, R.anim.push_out_left, R.anim.pull_in_left, R.anim.push_out_right);
ft.replace(R.id.content_frame, fragment)
.commit();
// update selected item and title, then close the drawer
mDrawerListChild.setItemChecked(position, true);
setTitle(mPlanTitles[position]);
mDrawerLayout.closeDrawer(mDrawerLinear);
}
は私のレイアウトです:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<include layout="@layout/action_bar" />
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/left_drawer_item"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:orientation="vertical">
<ImageView
android:id="@+id/profilIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_people1blue2x" />
<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="#111" />
</LinearLayout>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
可能な重複http://stackoverflow.com/questions/17939798/classcastexception-android-widget-framelayoutlayoutparams-to -android-support-v4) –
drawerlayout xmlはどこですか? –
@ Ben-J私はそれを追加しました投稿のスペースのために表示されませんでした – Jaythaking