Return to Video

05-39 Fix the Order Button - Solution

  • 0:00 - 0:03
    Não há apenas uma maneira certa
    de responder esta pergunta.
  • 0:03 - 0:06
    Realmente depende do que você
    considerar mais útil para identificar
  • 0:06 - 0:10
    a diferença entre o comportamento incorreto
    e o comportamento correto do app.
  • 0:11 - 0:12
    Aqui algumas das coisas que eu notei.
  • 0:13 - 0:16
    No comportamento incorreto do app,
    quando você aperta o botão Pedido,
  • 0:16 - 0:19
    a quantidade muda para o mesmo valor,
    e não deveria mudar.
  • 0:20 - 0:22
    Eu também notei
    que o preço estava correto
  • 0:22 - 0:25
    para este valor de quantidade,
    mas o preço deveria ser
  • 0:25 - 0:28
    a última quantidade que foi selecionada
    no seletor de quantidade.
  • 0:28 - 0:31
    A quantidade não devia mudar,
    e isto está relacionado com esse fato.
  • 0:32 - 0:34
    Vamos olhar o código existente
    e saber por que isso está acontecendo.
  • 0:35 - 0:39
    No arquivo de layout activity_main,
    temos o botão Pedido declarado aqui.
  • 0:39 - 0:41
    Quando o botão Pedido é clicado,
  • 0:41 - 0:44
    invocamos um método na MainActivity
    chamado submitOrder.
  • 0:44 - 0:48
    No arquivo MainActivity.java,
    o método submitOrder está aqui.
  • 0:48 - 0:51
    Isto é um código antigo,
    que ainda não alterámos.
  • 0:51 - 0:54
    Mas criámos a variável integral Quantity
    e a inicializamos com 5.
  • 0:55 - 0:56
    Exibimos isso na tela,
  • 0:56 - 1:00
    e também exibimos o displayPrice
    como o número de xícaras de café x $5 .
  • 1:01 - 1:02
    Este código já não faz muito sentido,
  • 1:02 - 1:04
    porque enquanto tentamos o submitOrder,
  • 1:04 - 1:06
    estamos tentando atualizar o Quantity.
  • 1:06 - 1:10
    Outro problema é que estamos criando
    uma variável integral chamada Quantity,
  • 1:10 - 1:12
    quando já temos a variável global Quantity
  • 1:12 - 1:14
    que é suposta monitorar
    o número de xícaras de café.
  • 1:15 - 1:18
    Na MainActivity já temos
    uma variável de quantidade global,
  • 1:18 - 1:22
    e qualquer método aqui dentro pode
    se referir a esta variável quantidade.
  • 1:22 - 1:24
    No entanto,
    no método submitOrder,
  • 1:25 - 1:27
    criámos uma nova variável de quantidade local.
  • 1:27 - 1:29
    É tecnicamente possível ter uma variável local
  • 1:29 - 1:32
    com o mesmo nome de uma variável global.
  • 1:32 - 1:35
    Isto significa apenas que,
    no contexto deste método,
  • 1:35 - 1:38
    após essa variável ser declarada,
    sempre que você se referir a quantidade,
  • 1:38 - 1:42
    na verdade estará se referindo à
    variável de quantidade local com o valor 5,
  • 1:43 - 1:45
    e não à variável de quantidade
    global com o valor 2.
  • 1:46 - 1:49
    Então display (quantity)
    e displayPrice (quantity*5)
  • 1:49 - 1:51
    ambos se referem ao valor de quantidade aqui.
  • 1:52 - 1:53
    Este é o escopo desta variável local.
  • 1:54 - 1:55
    Fora deste escopo,
  • 1:55 - 1:59
    sempre que você se referir a quantidade,
    será esta variável de quantidade global.
  • 1:59 - 2:01
    Se você pensar sobre isso,
  • 2:01 - 2:03
    não faz muito sentido,
    sempre que faz um pedido,
  • 2:03 - 2:07
    criar uma nova quantidade
    e exibi-la na tela.
  • 2:07 - 2:11
    O que você realmente deve fazer
    é usar apenas a quantidade que temos utilizado
  • 2:11 - 2:14
    para aumentar e diminuir
    o número de xícaras de café.
  • 2:15 - 2:17
    É sobre essa que devemos
    calcular nosso preço.
  • 2:18 - 2:21
    Para corrigir o nosso código,
    não declaramos a variável de quantidade local.
  • 2:22 - 2:24
    Em vez disso, devemos
    usar a variável global aqui.
  • 2:25 - 2:28
    Também devemos parar de tentar
    atualizar a quantidade na tela.
  • 2:29 - 2:33
    Os botões de mais e menos já atualizam a tela com o valor correto da quantidade.
  • 2:34 - 2:37
    Porém, ainda queremos que o
    botão Pedido atualize o preço,
  • 2:38 - 2:41
    mas, dessa vez, vamos calcular
    o preço como (quantity*5)
  • 2:42 - 2:43
    usando a variável de quantidade global.
  • 2:44 - 2:47
    Atualizarei o código para refletir
    o que nós acabámos de falar.
  • 2:48 - 2:50
    Note que a variável de quantidade
    agora tem a cor roxa,
  • 2:51 - 2:54
    o que significa que estamos usando
    a variável Quantity na MainActivity.
  • 2:55 - 2:57
    Quando o botão é apertado,
    ele acionará o método submitOrder.
  • 2:58 - 3:00
    Isso irá exibir o preço na tela,
  • 3:00 - 3:04
    onde o preço é calculado como
    a variável quantidade global vezes 5.
  • 3:05 - 3:07
    Parece estar correto,
    então vamos executá-lo.
  • 3:08 - 3:09
    Agora o teste final.
  • 3:10 - 3:13
    Vou mudar a quantidade para 6
    e depois apertar o botão Pedido.
  • 3:13 - 3:14
    Oba!!!
    O valor é $30.
  • 3:15 - 3:17
    Deixe eu testar outros valores
    para confirmar que não é acaso.
  • 3:18 - 3:20
    Esse está correto,
    esse também.
  • 3:21 - 3:22
    Maneiro, funciona!
  • 3:23 - 3:24
    Você corrigiu seu primeiro bug.
  • 3:24 - 3:26
    Você fez um ótimo trabalho nessa tarefa.
  • 3:26 - 3:29
    A funcionalidade do nosso app
    está funcionando bem.
  • 3:29 - 3:32
    Mas devo admitir que a UI
    está um pouco feia.
  • 3:32 - 3:35
    Em particular, o seletor de quantidade,
    poderia receber um pouco de amor.
  • 3:36 - 3:37
    Vamos trabalhar isso depois.
Title:
05-39 Fix the Order Button - Solution
Description:

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

Portuguese, Brazilian subtitles

Revisions