2017-12-06 24 views
3

NavigationView의 headerLayout 안에 포함 된 TextView에 액세스하려고합니다. Kotlin android extension을 사용하여보기에 액세스 할 수 있습니까? 이 방법을 사용했지만 TextView (여기 txtName)는 항상 null입니다. 여기 Android에서 Kotlin을 사용하여 NavigationView의 headerLayout에 지정된보기에서 액세스하는 방법

activity_main.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

<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입니다

import kotlinx.android.synthetic.main.nav_header_splash.* 
활동 클래스의 onCreate()에서

내가 내 프로젝트의

apply plugin: 'kotlin-android-extensions' 

응용 프로그램 폴더의

txtName.text = "Sample Code" 

같은 build.gradle을 build.gradle
를 텍스트를 설정

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

이 있습니까 내 코드에서 어떤 실수? 도와주세요. 나는 Kotlin에서 새로운 사람입니다.

답변

0

는 대신

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

로 주 파일 자체에서 사용할 수와

val header = mNavigationView.getHeaderView(0) 
header.txtName.text = "Sample Code" 
를 사용하여보기를 얻을 것이다하지 import kotlinx.android.synthetic.main.nav_header_splash.* 마십시오