我有以下内容:
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,所以我错过了什么?
答案 0 :(得分:0)
布局R.layout.drawer_fragment
不包含ID为R.id.drawer_layout
的视图,所以是的,mDrawerLayout
将始终为null。如果您想要访问ID为drawer_layout
的视图,则需要从活动中进行调用。