Android 如何使用 Kotlin 从 NavigationView 的 headerLayout 中指定的布局访问视图

How to access a view from layout specified in headerLayout of NavigationView using Kotlin in Android

我想访问 NavigationView 的 headerLayout 中包含的 TextView。是否可以使用 Kotlin android 扩展访问视图?我确实使用了这种方法,但是 TextView(此处为 txtName)始终为 null。

这是我的activity_main.xml

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_splash"
    app:menu="@menu/activity_splash_drawer" />

nav_header_splash.xml

<TextView
    android:id="@+id/txtName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/txt1"
    android:layout_below="@+id/imageView"
    android:text="@string/name"
    android:textSize="18sp"
    android:textColor="@color/white" />

MainActivity.kt我已经导入了

import kotlinx.android.synthetic.main.nav_header_splash.*

在 Activity 的 onCreate() 中 class 我将文本设置为

txtName.text = "Sample Code"

build.gradle 应用文件夹

apply plugin: 'kotlin-android-extensions'

build.gradle 我的项目

 classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"

我的代码有没有错误?请帮忙。我是科特林的新手。

不要 import kotlinx.android.synthetic.main.nav_header_splash.* 它将作为

从主文件本身提供

改为import kotlinx.android.synthetic.main.nav_header_splash.view.*

并使用

查看
val header = mNavigationView.getHeaderView(0)
header.txtName.text = "Sample Code"