我的问题:
我有MainActivity
及其XML
文件activity_main.xml
,其中包含NavigationDrawer
视图,该视图调用header.xml
文件显示在我的抽屉。
问题是我的头文件包含一个按钮,所以当我点击标题时它会打开一个网站。但是,由于我的Android studio
构建工具升级到23.0.2
我的onClick()
内的MainActivity
按钮会导致应用程序崩溃,因此会给我NullPointerException
。
我认为它崩溃了,因为头文件与我的activity_main.xml
完全不同,因此我的MainActivity
无法直接访问头文件中的视图。
如何访问header.xml
文件中的按钮并将其设为clickable
?
答案 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
}
});