使新导航抽屉视图的标题可单击

时间:2015-10-31 19:16:54

标签: android android-layout android-activity android-sdk-tools

我的问题:

我有MainActivity及其XML文件activity_main.xml,其中包含NavigationDrawer视图,该视图调用header.xml文件显示在我的抽屉。

问题是我的头文件包含一个按钮,所以当我点击标题时它会打开一个网站。但是,由于我的Android studio构建工具升级到23.0.2我的onClick()内的MainActivity按钮会导致应用程序崩溃,因此会给我NullPointerException

我认为它崩溃了,因为头文件与我的activity_main.xml完全不同,因此我的MainActivity无法直接访问头文件中的视图。

如何访问header.xml文件中的按钮并将其设为clickable

2 个答案:

答案 0 :(得分:1)

解决:

NullPointerException是由于包含我的Button的布局(Header.xml)不能用于MainActivity的xml布局,因此findViewById将始终为null,因为该按钮不存在。通过将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>

答案 1 :(得分:0)

您可以在活动onCreate()方法中设置NavigationView的HeaderView,并将监听器设置为标题视图,如:

yourNavigationView.addHeaderView(yourHeaderView);
yourHeaderView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // Handle the click event
        }
    });