Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
android_bindings [2025/01/20 16:14] enric_mieza_sanchez [Android Bindings] |
android_bindings [2025/01/20 19:00] (actual) enric_mieza_sanchez [View Bindings en Fragment] |
||
---|---|---|---|
Línia 9: | Línia 9: | ||
{{tag> #Dam #DamMp08 #DamMp08Uf2 # | {{tag> #Dam #DamMp08 #DamMp08Uf2 # | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ====== Objectiu i exemple ====== | ||
+ | |||
+ | La idea dels //view bindings// és substituir les crides amb //dynamic cast// que poden retornar un valor erroni i resultar en excepcions tiupus '' | ||
+ | |||
+ | El què habitualment resoldríem amb un '' | ||
+ | <code kotlin> | ||
+ | val button = findViewById< | ||
+ | button.setOnClickListener { | ||
+ | val toSpeak = binding.parlaText.text.toString() | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Ara es resoldrà amb una crida directa a la jerarquia d' | ||
+ | <code kotlin> | ||
+ | binding.button.setOnClickListener { | ||
+ | val toSpeak = binding.parlaText.text.toString() | ||
+ | tts.speak(toSpeak, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | El compilador i l'IDE seran capaços de detectar errors mitjançant la inferència de tipus, facilitant la claredat i seguretat del codi. | ||
\\ | \\ | ||
===== View Bindings en Activity ===== | ===== View Bindings en Activity ===== | ||
+ | |||
+ | Per poder emprar els //view bindings// caldrà modificar els arxius: | ||
+ | * build.gradle.kts | ||
+ | * MainActivity.kt | ||
<file kotlin build.gradle.kts> | <file kotlin build.gradle.kts> | ||
Línia 25: | Línia 54: | ||
<file kotlin MainActivity.kt> | <file kotlin MainActivity.kt> | ||
+ | package com.usuari.lamevaapp | ||
// ... | // ... | ||
import com.usuari.lamevaapp.databinding.ActivityMainBinding | import com.usuari.lamevaapp.databinding.ActivityMainBinding | ||
Línia 48: | Línia 78: | ||
===== View Bindings en Fragment ===== | ===== View Bindings en Fragment ===== | ||
+ | |||
+ | <code kotlin TTSFragment.kt> | ||
+ | package com.usuari.lamevaapp | ||
+ | // ULL: si es posa TTS en majúscules no ho reconeix bé, ha de ser camel case | ||
+ | import com.usuari.lamevaapp.databinding.FragmentTtsBinding | ||
+ | |||
+ | class TTSFragment : Fragment() { | ||
+ | private var _binding: FragmentTtsBinding? | ||
+ | private val binding get() = _binding!! | ||
+ | |||
+ | override fun onCreateView( | ||
+ | inflater: LayoutInflater, | ||
+ | savedInstanceState: | ||
+ | ): View? { | ||
+ | // Inflate the layout for this fragment | ||
+ | _binding = FragmentTtsBinding.inflate(inflater, | ||
+ | | ||
+ | // ... | ||
+ | } | ||
+ | | ||
+ | //... | ||
+ | } | ||
+ | |||
+ | </ | ||
\\ | \\ | ||