2017-12-06 3 views
3

NavigationViewのheaderLayoutに含まれるTextViewにアクセスしたいとします。 Kotlin android extensionを使用してビューにアクセスできますか?私はこのメソッドを使用しましたが、TextView(ここではtxtName)は常にnullです。ここでAndroidでKotlinを使用してNavigationViewのheaderLayoutで指定されたレイアウトからビューにアクセスする方法

は私が

import kotlinx.android.synthetic.main.nav_header_splash.* 
を輸入してきた私の activity_main.xml 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

<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" /> 

ですActivityクラスのonCreate()

私のプロジェクトの

txtName.text = "Sample Code" 

build.gradle

apply plugin: 'kotlin-android-extensions' 

appフォルダの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.*ください
関連する問題