Quadres de Diàleg
De FFAWiki
La revisió el 16:11, 15 feb 2022 per Mayola (discussió | contribucions)
- 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.
- clic dret → New → Java Class
- Li poses el nom que vulguis, en el meu cas NouDialeg i un cop creat l'amplies de DialogFragment.
public class NouDialeg extends DialogFragment
- Per poder instanciar el diàleg hem de crear el mètode onCreateDialog (s'autocompleta sol i el sobreescriu).
- En la web trobareu la documentació per si voleu copar el codi.
- Importem les llibreries necessàries.
-
- 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.
- builder.setPositiveButton("String amb el text que es mostrarà al botó de confirmar", Listener que espera que el botó sigui premut).
- 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.
- És exactament el mateix que en el punt 2 però amb el botó de cancel·lar.
- 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.
- 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.
- 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.
- Crearem aquesta vista res → layout→ new→ Layout Recource File
- 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)
-
- 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.
- Dins la interfície creem el listener, public void onDialegGuardarClickListener()
- Creem l'objecte de la interfície dins el diàleg
- 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.
- 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ó
- 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