Dołącz z ogólnym układem (nie scalaj węzła), musimy przypisać identyfikator do dołączonej części, w ten sposób w powiązaniu uzyskamy dostęp do dołączonej części
private lateinit var exampleBinding:ActivityExampleBinding//activity_example.xml layoutoverride fun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)
exampleBinding =ActivityExampleBinding.inflate(layoutInflater)
setContentView(exampleBinding.root)//we will be able to access included layouts view like this
val includedView:View= exampleBinding.yourId.idOfIncludedView
//[...]}
Uwzględnij z blokiem scalania w układzie zewnętrznym. Nie możemy dodać do niego identyfikatora, ponieważ blok scalania nie jest widokiem. Powiedzmy, że mamy taki wieczny układ scalania (merge_layout.xm):
Aby poprawnie powiązać taki układ scalania, musimy:
W twoim kodzie aktywności:
private lateinit var exampleBinding:ActivityExampleBinding//activity_example.xml layoutprivate lateinit var mergeBinding:MergeLayoutBinding//merge_layout.xml layoutoverride fun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)
exampleBinding =ActivityExampleBinding.inflate(layoutInflater)//we need to bind the root layout with our binder for external layout
mergeBinding =MergeLayoutBinding.bind(exampleBinding.root)
setContentView(exampleBinding.root)//we will be able to access included in merge layout views like this
val mergedView:View= mergeBinding.someView
//[...]}
Bardzo prosta odpowiedź i wykorzystuje nową składnię - wszystko działa dla mnie w działaniu nie fragmentarycznym o podobnej składni onCreate(). Dzięki. (Mam tylko trochę problemów z używaniem dla a DrawerLayout)
Fat Monk
0
Innym prostym sposobem byłoby użycie biblioteki powiązania danych. Następnie zawiń układ XML tagiem, aby w przypadku korzystania z biblioteki automatycznie generowało klasy wymagane do powiązania widoków w układzie z obiektami danych. Szczerze mówiąc, myślę, że to dobra droga. Postępuj zgodnie z instrukcjami tutaj
Twoje pierwsze pytanie, które działa z dołączonym układem za pomocą ViewBinding, można tak łatwo rozwiązać.
Oto przykładowy plik main_fragment.xml
A MainFragment.java może być tak
Teraz masz dwa wiązania. jeden z nich jest domyślny, a następny pochodzi z dołączonego układu.
źródło
onCreate()
. Dzięki. (Mam tylko trochę problemów z używaniem dla aDrawerLayout
)Innym prostym sposobem byłoby użycie biblioteki powiązania danych. Następnie zawiń układ XML tagiem, aby w przypadku korzystania z biblioteki automatycznie generowało klasy wymagane do powiązania widoków w układzie z obiektami danych. Szczerze mówiąc, myślę, że to dobra droga. Postępuj zgodnie z instrukcjami tutaj
źródło