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_fragments [2023/01/20 18:03] enric_mieza_sanchez [Android Fragments] |
android_fragments [2025/01/08 01:19] (actual) enric_mieza_sanchez [ViewModel] |
||
---|---|---|---|
Línia 2: | Línia 2: | ||
Els '' | Els '' | ||
- | |||
- | {{https:// | ||
Referències: | Referències: | ||
* [[Android]] a la pròpia wiki bytes.cat | * [[Android]] a la pròpia wiki bytes.cat | ||
* ... | * ... | ||
- | |||
{{tag> #Dam #DamMp08 #DamMp08Uf1 # | {{tag> #Dam #DamMp08 #DamMp08Uf1 # | ||
+ | |||
+ | |||
+ | {{ https:// | ||
+ | |||
===== App amb fragments ===== | ===== App amb fragments ===== | ||
App amb fragments: | App amb fragments: | ||
- | - Crear app amb el // | + | - Crear app amb el // |
- | - Afegir un nou '' | + | - Afegir un nou '' |
- | - Afegir el nou '' | + | - Afegir el nou '' |
- | - ... | + | - Afegir el nou '' |
- | - | + | - Anar a '' |
+ | R.id.navigation_home, | ||
+ | R.id.navigation_notifications, | ||
+ | .build();</ | ||
+ | - Posar una icona adequada pel nou fragment. | ||
+ | - La plantilla sol tenir un // | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== ViewModel ===== | ||
+ | |||
+ | |||
+ | <WRAP tip left twothirds> | ||
+ | Haureu vist que el '' | ||
+ | |||
+ | No és necessari utilitzar el '' | ||
+ | </ | ||
+ | |||
+ | {{https:// | ||
+ | |||
+ | \\ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | Un [[https:// | ||
+ | <tabbox Versió Kotlin> | ||
+ | <code kotlin> | ||
+ | homeViewModel.text.observe(viewLifecycleOwner) { | ||
+ | textView.text = it | ||
+ | }</ | ||
+ | <tabbox Versió Java> | ||
+ | <code java> | ||
+ | </ | ||
+ | <WRAP info> | ||
+ | Per [[https:// | ||
+ | |||
+ | {{https:// | ||
+ | </ | ||
+ | |||
+ | |||
+ | <WRAP todo> | ||
+ | Afegeix un '' | ||
+ | |||
+ | Implementa aquesta funcionalitat simple: quan premem el botó, canvia el text dels dos '' | ||
+ | * En el '' | ||
+ | * En el '' | ||
+ | |||
+ | Algo així: | ||
+ | <tabbox Versió Kotlin> | ||
+ | <file kotlin HomeFragment.kt> | ||
+ | _binding!!.button.setOnClickListener(View.OnClickListener { | ||
+ | homeViewModel.setText(" | ||
+ | }) | ||
+ | </ | ||
+ | Cal afegir '' | ||
+ | <file kotlin HomeViewModel.kt> | ||
+ | class HomeViewModel : ViewModel() { | ||
+ | |||
+ | private val _text = MutableLiveData< | ||
+ | value = "This is home Fragment" | ||
+ | } | ||
+ | var text: LiveData< | ||
+ | |||
+ | fun setText(newtext: | ||
+ | _text.postValue(newtext) | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | <tabbox Versió Java> | ||
+ | <code java> | ||
+ | homeButton.setOnClickListener(new View.OnClickListener() { | ||
+ | @Override | ||
+ | public void onClick(View view) { | ||
+ | // Modifiquem objecte sense ViewModel directament | ||
+ | TextView directTextView = root.findViewById(R.id.directTextView); | ||
+ | directTextView.setText(" | ||
+ | |||
+ | // Modifiquem contingut ViewModel (es reflaxarà a la View) | ||
+ | homeViewModel.setText(" | ||
+ | } | ||
+ | }); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Ara posa l'app en marxa, habilita el // | ||
+ | Com expliques aquest comportament? | ||
+ | </ | ||