web-dev-qa-db-ja.com

Kotlin Android拡張機能:別のレイアウトに含まれるレイアウトのビューへの参照を取得するにはどうすればよいですか?

別のレイアウトを含むレイアウトがあります。

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
          Android:orientation="vertical"
          Android:layout_width="match_parent"
          Android:layout_height="match_parent">

    <TextView
        Android:id="@+id/textView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="TextView"/>

    <include layout="@layout/included_layout" />

</LinearLayout>

include_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
          Android:orientation="vertical"
          Android:layout_width="match_parent"
          Android:layout_height="match_parent">

    <TextView
        Android:id="@+id/includedTextView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Included TextView"/>

</LinearLayout>

含まれているレイアウトでTextViewへの参照を取得するにはどうすればよいですか? (まだ)サポートされていませんか?

主な活動:

import Android.app.Activity
import Android.os.Bundle
import Android.support.v7.app.AppCompatActivity
import kotlinx.Android.synthetic.activity_main.*

class MainActivity : AppCompatActivity(){

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        textView.text = "text" // works!
        textViewInclude.text = "textInclude" // does not work: "Unresolved reference: textViewInclude "
    }
}
15
Lukas Lechner

含まれているレイアウトをimportする必要があります。

import Android.app.Activity
import Android.os.Bundle
import Android.support.v7.app.AppCompatActivity
import kotlinx.Android.synthetic.main.activity_main.*
import kotlinx.Android.synthetic.main.included_layout.* // Here

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // From activity_main.textView
        textView.text = "text" 

        // From included_layout.textViewInclude
        textViewInclude.text = "textInclude"
    }
}
14
konomae