Quadres de Diàleg

De FFAWiki
Salta a la navegació Salta a la cerca
  • 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 un com implementat la interfície en l'activity, en el meu cas he fet un Toast per demostrar la comunicació.
    11. public class MainActivity extends AppCompatActivity implements OnNouDialegListener {
    12. DialegsAndroid11.png
    13. 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
    14. DialegsAndroid12.png