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? | ||
| + | </ | ||