2015-11-25 14 views
9

私は別のレイアウトが含まれてレイアウトを持っている: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/includedTextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Included TextView"/> 

</LinearLayout> 

<?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> 

included_layout.xmlは、どのように私は含まれるレイアウトでのTextViewへの参照を取得できますか?まだサポートされていませんか?

MainActivity:

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

答えて

10

あなたが含まれるレイアウトを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" 
    } 
} 
+2

自動的にインポートすることはできませんか? –

+0

私はこの問題を抱えていますが、私はこの行をインポートしています:import kotlinx.android.synthetic.main.included_layout。* 問題が発生しました。(未解決の参照:kotlinx) お願いしますか? –

+2

同じレイアウトの2つのインクルードをお持ちの場合はどうなりますか?残念ながらレイアウトが別のモジュールの場合は –

関連する問題