使新导航抽屉视图的 header 可点击
Make the header of the new navigation drawer view clickable
我的问题:
我有一个 MainActivity
及其 XML
文件 activity_main.xml
,其中包含一个 NavigationDrawer
视图,该视图调用一个 header.xml
文件显示在我的抽屉里。
问题是我的 header 文件包含一个按钮,所以当我单击 header 时它会打开一个站点。但是,自从将我的 Android studio
构建工具升级到 23.0.2
后,我的 MainActivity
中的按钮 onClick()
使应用程序崩溃,给我一个 NullPointerException
.
我认为它崩溃是因为 header 文件与我的 activity_main.xml
完全不同,所以我的 MainActivity
无法直接访问 [=35] 中的视图=] 文件.
如何访问 header.xml
文件中的按钮并使其成为 clickable
?
您可以在 activity onCreate() 方法中设置 NavigationView 的 HeaderView,并为 header 视图设置监听器,例如:
yourNavigationView.addHeaderView(yourHeaderView);
yourHeaderView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Handle the click event
}
});
已解决:
NullPointerException 是由于包含我的 Button 的布局 (Header.xml) 不容易用于 MainActivity 的 xml 布局,因此 findViewById 将始终为空,因为对它来说,按钮不存在。通过将 header.xml 及其所有内容(特别是按钮)包含到 MainActivity.xml
的 NavigationView 中解决了这个问题
像这样:
<android.support.v4.widget.DrawerLayout ....>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/tool_bar" />
....
</RelativeLayout>
<android.support.design.widget.NavigationView
...
<include
layout="@layout/header" />
</android.support.v4.widget.DrawerLayout>
我的问题:
我有一个 MainActivity
及其 XML
文件 activity_main.xml
,其中包含一个 NavigationDrawer
视图,该视图调用一个 header.xml
文件显示在我的抽屉里。
问题是我的 header 文件包含一个按钮,所以当我单击 header 时它会打开一个站点。但是,自从将我的 Android studio
构建工具升级到 23.0.2
后,我的 MainActivity
中的按钮 onClick()
使应用程序崩溃,给我一个 NullPointerException
.
我认为它崩溃是因为 header 文件与我的 activity_main.xml
完全不同,所以我的 MainActivity
无法直接访问 [=35] 中的视图=] 文件.
如何访问 header.xml
文件中的按钮并使其成为 clickable
?
您可以在 activity onCreate() 方法中设置 NavigationView 的 HeaderView,并为 header 视图设置监听器,例如:
yourNavigationView.addHeaderView(yourHeaderView);
yourHeaderView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Handle the click event
}
});
已解决:
NullPointerException 是由于包含我的 Button 的布局 (Header.xml) 不容易用于 MainActivity 的 xml 布局,因此 findViewById 将始终为空,因为对它来说,按钮不存在。通过将 header.xml 及其所有内容(特别是按钮)包含到 MainActivity.xml
的 NavigationView 中解决了这个问题像这样:
<android.support.v4.widget.DrawerLayout ....>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/tool_bar" />
....
</RelativeLayout>
<android.support.design.widget.NavigationView
...
<include
layout="@layout/header" />
</android.support.v4.widget.DrawerLayout>