抽屉片段的容器为空,因此我无法对其进行充气

时间:2015-01-18 22:28:24

标签: android android-fragments navigation-drawer

我有以下内容:

activity_main.xml:包含framelayout和一个用于保存抽屉的片段,它不仅仅是一个列表视图

<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">

    <FrameLayout android:id="@+id/container" android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <fragment android:id="@+id/navigation_drawer"
        android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
        android:layout_gravity="start"
        android:name="com.example.example.drawer.DrawerFragment"
        tools:layout="@layout/drawer_fragment" />

</android.support.v4.widget.DrawerLayout>

drawer_fragment.xml,列表视图顶部有图像

<LinearLayout 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:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/profilePhoto"
        android:layout_width="match_parent"
        android:contentDescription="@null"
        android:layout_height="128dp" />

    <ListView
        android:id="@+id/lvOptions"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="3dp"
        android:background="#cccc"
        tools:context=".NavigationDrawerFragment" />

</LinearLayout>

当执行MainActivity的setContentView(R.layout.activity_main);时,它还会自动执行抽屉片段的onCreateView,但容器为空。我做了以下事情:

View rootView = inflater.inflate(R.layout.drawer_fragment, container, false);
mDrawerLayout = (DrawerLayout) rootView.findViewById(R.id.drawer_layout);

但是之后mDrawerLayout为null,我想这是因为容器是null,所以我错过了什么?

1 个答案:

答案 0 :(得分:0)

布局R.layout.drawer_fragment不包含ID为R.id.drawer_layout的视图,所以是的,mDrawerLayout将始终为null。如果您想要访问ID为drawer_layout的视图,则需要从活动中进行调用。