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 后,您就可以在 ActivityView 层次结构中找到它们,并且调用 findViewById() 不会 return null.