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, | ||
| + | | ||
| + | // ... | ||
| + | } | ||
| + | | ||
| + | //... | ||
| + | } | ||
| + | |||
| + | </ | ||
| \\ | \\ | ||