[英]Kotlin's synthetic properties conflict
我是Kotlin的新手。 在其他非常有趣的事情中,我發現Android擴展, 根據文檔 ,應該讓我使用活動的視圖,而不需要findViewById
。
實際上,通過在我的導入中添加這一行,它可以很好地工作:
import kotlinx.android.synthetic.main.<layout>.*
問題是當兩個不同的布局包含具有相同id的窗口小部件(即合成屬性的名稱相同)時,
例如兩個不同的TextView
,其id為txtTitle
。 假設第一個是活動,第二個屬於適配器內部使用的布局。
當我嘗試在第一個TextView(活動的一個)上調用一個方法時,我看不到預期的結果,就像調用將在另一個視圖上完成一樣。 作為對此的確認,當我調用txtTitle.parent
,我會看到其他txtTitle
的父級和兄弟級,而不是預期的那些。
難道我做錯了什么? 我發現繞過這個問題的唯一方法是在我的所有布局中使用不同的名稱或繼續使用findViewById
,但遺憾的是浪費這種語言功能......
您可以嘗試使用不同布局中具有相同ID的TextView
。
import kotlinx.android.synthetic.main.activity_main.text_hello as lActivity
import kotlinx.android.synthetic.main.extra_layout.text_hello as lView
使用lActivity.text = "Some text"
的TextView
從activity_main
和lView.text = "Some text"
的TextView
從extra_layout
。
您的問題的另一個可能的解決方案是只導入一個並省略另一個,假設您需要的所有ID都存在。
在一天結束時,類似的ID指向相同的東西,它是從一個布局還是從另一個布局導入並不重要。
希望有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.