Android 中导航视图的 header 视图实例始终为 null
Instance of header view of navigation view in Android is always null
我正在开发 Android 应用程序。在我的应用程序中,我正在使用导航视图。我需要根据情况以编程方式更改 header 视图的设计。但是 header 视图实例的变量总是抛出空异常。我的代码有什么问题?
这就是我在导航视图中设置header视图的方式
<android.support.design.widget.NavigationView
app:itemIconTint="@drawable/drawer_item"
app:itemTextColor="@drawable/drawer_item"
android:id="@+id/left_nv_view"
app:headerLayout="@layout/header_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start" />
这是我的 header 视图
的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/header_view"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
这就是我实例化 header 视图并在 activity
中对其进行更改的方式
//I initialized navigation drawer and navigation view first
headerView = (LinearLayout)findViewById(R.id.header_view);
headerView.setOrientation(LinearLayout.VERTICAL);
但是总是抛空指针异常。我该如何修复我的代码?
A NavigationView
需要一些时间才能使其 header View
充气并展开。通常,这在 onCreate()
完成后才会完成,但您可以使用 NavigationView#getHeaderView()
方法强制它立即发生。
成功加载 header 后,您就可以在 Activity
的 View
层次结构中找到它们,并且调用 findViewById()
不会 return null.
我正在开发 Android 应用程序。在我的应用程序中,我正在使用导航视图。我需要根据情况以编程方式更改 header 视图的设计。但是 header 视图实例的变量总是抛出空异常。我的代码有什么问题?
这就是我在导航视图中设置header视图的方式
<android.support.design.widget.NavigationView
app:itemIconTint="@drawable/drawer_item"
app:itemTextColor="@drawable/drawer_item"
android:id="@+id/left_nv_view"
app:headerLayout="@layout/header_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start" />
这是我的 header 视图
的布局<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/header_view"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
这就是我实例化 header 视图并在 activity
中对其进行更改的方式 //I initialized navigation drawer and navigation view first
headerView = (LinearLayout)findViewById(R.id.header_view);
headerView.setOrientation(LinearLayout.VERTICAL);
但是总是抛空指针异常。我该如何修复我的代码?
A NavigationView
需要一些时间才能使其 header View
充气并展开。通常,这在 onCreate()
完成后才会完成,但您可以使用 NavigationView#getHeaderView()
方法强制它立即发生。
成功加载 header 后,您就可以在 Activity
的 View
层次结构中找到它们,并且调用 findViewById()
不会 return null.