Return to Video

05-39 Fix the Order Button - Solution

  • 0:00 - 0:03
    No hay una sola forma correcta
    de responder a esta pregunta.
  • 0:03 - 0:07
    Depende de lo que te sea más útil
    para ver la diferencia
  • 0:07 - 0:10
    entre el funcionamiento correcto
    de la app y el incorrecto.
  • 0:11 - 0:12
    Voy a decirte algunas cosas que he notado.
  • 0:13 - 0:16
    En el funcionamiento incorrecto,
    cuando haces clic en el botón de Pedir,
  • 0:16 - 0:20
    la cantidad cambia al mismo valor
    cada vez, pero no debería cambiar.
  • 0:20 - 0:22
    Luego he visto que el precio era correcto
  • 0:22 - 0:25
    para este valor de cantidad,
    pero el precio debería ser
  • 0:25 - 0:28
    la última cantidad seleccionada
    en el colector de cantidad.
  • 0:28 - 0:31
    De nuevo, esto tiene que ver
    con que la cantidad no debería cambiar.
  • 0:32 - 0:34
    Miremos al código existente
    para ver por qué pasa esto.
  • 0:35 - 0:39
    El Button de Pedir está en el archivo
    del layout principal de la actividad
  • 0:39 - 0:41
    Cuando hacemos clic en Pedir,
  • 0:41 - 0:44
    invocamos un método en la main activity
    (actividad principal) llamado submitOrder.
  • 0:44 - 0:48
    En el archivo MainActivity.java,
    aquí está el método submitOrder.
  • 0:48 - 0:51
    Este es un código ya muy viejo
    que no hemos cambiado aún,
  • 0:51 - 0:54
    pero creamos una variable
    de cantidad entera y la iniciamos en 5.
  • 0:55 - 0:56
    La mostramos en pantalla.
  • 0:56 - 1:00
    También mostramos el precio
    como el número de cafés a 5 $ cada uno.
  • 1:01 - 1:04
    Ahora, este código no tiene mucho sentido,
    porque, como intentamos submitOrder,
  • 1:04 - 1:06
    intentamos actualizar la cantidad.
  • 1:06 - 1:10
    Y otro problema es que estamos creando
    una variable de cantidad entera,
  • 1:10 - 1:12
    cuando ya tenemos
    una variable de cantidad global
  • 1:12 - 1:15
    que se supone lleva la cuenta
    del número de tazas de café.
  • 1:15 - 1:18
    En la MainActivity ya tenemos
    una variable de cantidad global,
  • 1:18 - 1:22
    así que cualquier método de aquí puede
    referirse a esta variable de cantidad.
  • 1:22 - 1:27
    Pero en submitOrder, estamos creando
    una nueva variable de cantidad local.
  • 1:27 - 1:29
    Tecnicamente, puede haber
    una variable local
  • 1:29 - 1:32
    llamada igual que una variable global.
  • 1:32 - 1:35
    Esto solo significa que,
    en el contexto de este método,
  • 1:35 - 1:38
    después de declarar esta variable,
    cada vez que te refieres a cantidad,
  • 1:38 - 1:42
    te refieres en realidad a esta variable
    de cantidad local con valor 5,
  • 1:43 - 1:45
    no a la variable
    de cantidad global con valor 2.
  • 1:46 - 1:47
    Por eso, display [mostrar](quantity)
  • 1:48 - 1:51
    y displayPrice(quantity *5) se refieren
    ambas a este valor de cantidad.
  • 1:52 - 1:54
    Este es el ámbito de esta variable local.
  • 1:54 - 1:55
    Fuera de este ámbito,
  • 1:55 - 1:59
    si te refieres a cantidad, te refieres
    a esta variable de cantidad global.
  • 1:59 - 2:01
    Aunque si lo piensas,
  • 2:01 - 2:03
    no tiene mucho sentido que,
    cuando mandas tu orden (submitOrder),
  • 2:03 - 2:07
    crees una nueva cantidad
    y la muestres en pantalla.
  • 2:07 - 2:08
    Lo que queremos hacer es
  • 2:08 - 2:11
    usar la cantidad de la que hemos ido
    llevando la cuenta
  • 2:11 - 2:15
    según aumentábamos o reducíamos
    el número de tazas de café.
  • 2:15 - 2:17
    De eso es de lo que deberíamos
    calcular el precio.
  • 2:18 - 2:21
    Para arreglar nuestro código, no debemos
    declarar una variable de cantidad local.
  • 2:22 - 2:25
    En su lugar, deberíamos usar
    esta variable de cantidad global.
  • 2:25 - 2:28
    También deberíamos dejar
    de actualizar la cantidad en la pantalla.
  • 2:29 - 2:31
    Los botones de más y menos
    ya se ocupan de actualizar la pantalla
  • 2:31 - 2:33
    con el valor de la cantidad correcto.
  • 2:34 - 2:37
    Pero sí que queremos que el Button
    submitOrder siga actualizando el precio.
  • 2:38 - 2:41
    Pero esta vez vamos a calcular
    la cantidad como quantity (cantidad) * 5,
  • 2:42 - 2:43
    usando la variable de cantidad global.
  • 2:44 - 2:47
    Voy a actualizar el código
    para que refleje lo que he mencionado.
  • 2:48 - 2:51
    Fíjate que la variable de cantidad
    ha adoptado una fuente violeta,
  • 2:51 - 2:54
    lo que significa que usamos la variable
    de cantidad global en la MainActivity.
  • 2:55 - 2:57
    Cuando se presione el botón,
    se disparará el método submitOrder.
  • 2:58 - 3:00
    Esto mostrará el precio en la pantalla,
  • 3:00 - 3:04
    donde el precio se calcula
    como la variable de cantidad global por 5.
  • 3:05 - 3:07
    Parece correcto, ejecutémoslo
    en nuestro dispositivo.
  • 3:08 - 3:09
    Y ahora la prueba definitiva.
  • 3:10 - 3:13
    Voy a cambiar la cantidad a 6
    y hacer clic en Pedir...
  • 3:13 - 3:14
    ¡Y sí, son $30!
  • 3:15 - 3:17
    Voy a ver con otros valores,
    para comprobar que no ha sido casualidad.
  • 3:18 - 3:19
    Parece correcto.
  • 3:19 - 3:20
    Parece correcto.
  • 3:21 - 3:22
    ¡Perfecto, funciona!
  • 3:23 - 3:24
    Has arreglado un error por primera vez.
  • 3:24 - 3:26
    Lo has hecho muy bien.
  • 3:26 - 3:29
    La funcionalidad de nuestra app
    está funcionando muy bien.
  • 3:29 - 3:32
    Pero, admitámoslo, la interfaz del usuario
    es un poco sosa.
  • 3:32 - 3:35
    En particular, podríamos tratar mejor
    al colector de cantidad
  • 3:36 - 3:37
    Esto lo haremos a continuación.
Title:
05-39 Fix the Order Button - Solution
Description:

more » « less
Video Language:
English
Team:
Udacity
Project:
UD837 - Android for Beginners
Duration:
03:39

Spanish subtitles

Revisions