Quadres de Diàleg: diferència entre les revisions

De FFAWiki
Cap resum de modificació
Cap resum de modificació
Línia 28: Línia 28:
#[[Fitxer:DialegsAndroid6.png|sense marc|675x675px]]
#[[Fitxer:DialegsAndroid6.png|sense marc|675x675px]]
##Posem com a paràmetres del mètode inflate el layout que volem mostrar.
##Posem com a paràmetres del mètode inflate el layout que volem mostrar.
#En el cas que vulguem comunicar l'activity amb el dialeg ho farem amb una interfície.
##Creem la interfície clic dret → New → Java Class i enves de posar Class posem Interface.
##[[Fitxer:DialegsAndroid7.png|sense marc|335x335px]]
##Dins la interfície creem el listener, public void onDialegGuardarClickListener()
##[[Fitxer:DialegsAndroid8.png|sense marc|481x481px]]
##Creem l'objecte de la interfície dins el diàleg
##[[Fitxer:DialegsAndroid9.png|sense marc|540x540px]]
##S'ha de verificar que l'activity en ús ha implementat la interfície que toca amb el mètode onAttach(). (El mètode també està a la documentació anteriorment esmentada per si les voleu copiar)
##Si es copia de la documentació només s'ha de canviar el listener que s'utilitza.
##[[Fitxer:DialegsAndroid10.png|sense marc|607x607px]]
##En al activity que s'utilitza se sobreescriu el mètode del listener pel que vulguem, en el meu cas he fet un Toast per demostrar la comunicació
##[[Fitxer:DialegsAndroid11.png|sense marc|783x783px]]
##Per poder cridar aquest mètode dins la classe de diàleg només s'ha de cridar el mètode de l'objecte creat en el pas 5/6, en el meu cas l'he cridat després de fer el confirm
##[[Fitxer:DialegsAndroid12.png|sense marc|714x714px]]

Revisió del 15:11, 15 feb 2022

  • Hi han diferents maneres d'implementar un quadre de diàleg, en aquest exemple es mostra com fer-ho a partir d'un fragment.
    • La manera és crear una classe que s'ampliï DialogFragment per obtenir els seus mètodes.
  1. clic dret → New → Java Class
  2. Li poses el nom que vulguis, en el meu cas NouDialeg i un cop creat l'amplies de DialogFragment.
    1. public class NouDialeg extends DialogFragment
  3. Per poder instanciar el diàleg hem de crear el mètode onCreateDialog (s'autocompleta sol i el sobreescriu).
  4. En la web trobareu la documentació per si voleu copar el codi.
  5. Importem les llibreries necessàries.
  6. DialegsAndroid1.png
    1. builder.setMessage(), s'utilitza per editar el text que es pot mostrar com a missatge en el diàleg, nosaltres en aquest exemple no el fem servir i el substituïm per builder.setTitle("Títol de prova") posant així un títol al diàleg.
    2. builder.setPositiveButton("String amb el text que es mostrarà al botó de confirmar", Listener que espera que el botó sigui premut).
    3. Aquí posarem totes les accions que vols que faci si es dona a confirmar, una d'elles ha de ser dialog.dismiss(); per tal de tancar aquest diàleg un cop donat el boto.
    4. És exactament el mateix que en el punt 2 però amb el botó de cancel·lar.
    5. Aquí es posen les accions en cas que es premi el botó de cancel·lar i, igual que en el pas 3 una d'elles ha de ser dialog.dismiss(); per tal de tancar aquest diàleg un cop donat el boto.
    6. DialegsAndroid2.png
  7. Hi han diferents maneres de fer anar un Diàleg com creant un mètode estàtic en aquesta classe que retorni l'objecte, però el que proposa l'exemple és crear i cridar aquest diàleg des de l'activity que es vulgui.
    1. Creem l'objecte
    2. Cridem al mètode show() passant per paràmetre el gestor de fragments i un String que serà el nom de la transacció. (això es pot fer a on sigui jo he fet que quan es premi el botó flotant que ve per defecte a la plantilla s'activi)
    3. DialegsAndroid3.png
  8. Aquests són els passos mínims perquè funcioni, però fent-ho així la personalització és mínima, així que crearem una vista perquè la carregui el fragment.
  9. Crearem aquesta vista res → layout→ new→ Layout Recource File
    1. Posarem el nom que vulguem i el tipus de Layaout que volem, en el meu cas ConstraintLayaout.
    2. DialegsAndroid4.png
    3. La modifiquem com vulguem, en el meu cas he posat un textview i un plain text. (Anotació: per centrar al centre el contingut posar android:gravity="center")
    4. DialegsAndroid5.png
  10. Posem les línies de codi necessàries perquè el diàleg carregui la vista en el fragment. (també estan a la documentació anteriorment esmentada per si les voleu copiar)
  11. DialegsAndroid6.png
    1. Posem com a paràmetres del mètode inflate el layout que volem mostrar.
  12. En el cas que vulguem comunicar l'activity amb el dialeg ho farem amb una interfície.
    1. Creem la interfície clic dret → New → Java Class i enves de posar Class posem Interface.
    2. DialegsAndroid7.png
    3. Dins la interfície creem el listener, public void onDialegGuardarClickListener()
    4. DialegsAndroid8.png
    5. Creem l'objecte de la interfície dins el diàleg
    6. DialegsAndroid9.png
    7. S'ha de verificar que l'activity en ús ha implementat la interfície que toca amb el mètode onAttach(). (El mètode també està a la documentació anteriorment esmentada per si les voleu copiar)
    8. Si es copia de la documentació només s'ha de canviar el listener que s'utilitza.
    9. DialegsAndroid10.png
    10. En al activity que s'utilitza se sobreescriu el mètode del listener pel que vulguem, en el meu cas he fet un Toast per demostrar la comunicació
    11. DialegsAndroid11.png
    12. Per poder cridar aquest mètode dins la classe de diàleg només s'ha de cridar el mètode de l'objecte creat en el pas 5/6, en el meu cas l'he cridat després de fer el confirm
    13. DialegsAndroid12.png