Return to Video

05-39 Fix the Order Button - Solution

  • 0:00 - 0:03
    この問題の正解は
    1 つだけではありません
  • 0:03 - 0:06
    アプリの不具合と正しい動作の
    違いを区別するために―
  • 0:06 - 0:10
    一番やりやすい方法によります
  • 0:10 - 0:13
    ここに 指摘された
    ポイントがいくつかあります
  • 0:13 - 0:16
    不具合動作は
    Order ボタンを押す度に―
  • 0:16 - 0:20
    変わるべきでない数量 ( Quantity )が
    同じ値に変わってしまうことです
  • 0:20 - 0:23
    次に 料金( Price )は数量に対して
    正しいのですが―
  • 0:23 - 0:26
    これは数量調節ボタンで
    選んだ最終数量に対して―
  • 0:26 - 0:28
    正しい料金であるべきです
  • 0:28 - 0:32
    これは先ほどの
    変わるべきではない数量とつながっています
  • 0:32 - 0:34
    現状のコードを見て
    問題の発生原因を考えましょう
  • 0:35 - 0:39
    activity_main のレイアウトファイルです
    Order ボタンはここに示されています
  • 0:39 - 0:41
    Order ボタンが押された時―
  • 0:41 - 0:44
    MainActivity 内で submitOrder という
    メソッドが呼ばれます
  • 0:44 - 0:48
    MainActivity.java ファイルの
    ここに submitOrder メソッドがあります
  • 0:48 - 0:51
    長い間変更されていない
    古いコードで―
  • 0:51 - 0:55
    「整数量変数の初期設定は 5 」と
    なっています
  • 0:55 - 0:57
    また「これをスクリーン上に表示します」―
  • 0:57 - 1:01
    「料金はコーヒーの杯数 × $5 で
    表示されます」ともあります
  • 1:01 - 1:02
    このコードは既にあまり意味がありません
  • 1:02 - 1:06
    なぜなら 注文を入れようとする時に
    数量を更新しようとするからです
  • 1:06 - 1:09
    もう 1 つの問題はコーヒーの杯数に
    従って変化することになっているー
  • 1:09 - 1:12
    グローバル量変数が既にあるのに―
  • 1:12 - 1:15
    もう 1 つ整数の量変数を作成したことです
  • 1:15 - 1:18
    MainActivity 内にすでに
    グローバル量変数があるので―
  • 1:18 - 1:23
    この内部にあるメソッドは
    この量変数を参照できます
  • 1:23 - 1:27
    しかしながら submitOrder メソッドの中に
    新たにローカル量変数が作成されています
  • 1:27 - 1:30
    技術的にはローカル変数は―
  • 1:30 - 1:32
    グローバル変数と同名でも構いません
  • 1:32 - 1:35
    これはこのメソッドの内容でのみ
    という意味です
  • 1:35 - 1:39
    この変数が示された後なら
    いつでも数量を参照できます
  • 1:39 - 1:43
    ここはこの「値 5 のローカル量変数」を
    実際には参照していて―
  • 1:43 - 1:46
    「値 2 のグローバル量変数」
    ではありません
  • 1:46 - 1:47
    ですから「 display(quantity) 」 も―
  • 1:47 - 1:52
    「 displayPrice(quantity *5) 」も
    この量変数を参照しています
  • 1:52 - 1:54
    これがこのローカル変数の及ぶ範囲です
  • 1:54 - 1:55
    この範囲の外側では―
  • 1:55 - 1:59
    量を参照する時はいつでも
    このグローバル変数の量を意味します
  • 1:59 - 2:01
    このことを考えると
  • 2:01 - 2:03
    注文を出す時 新たに数値を作成して―
  • 2:03 - 2:07
    スクリーン上に表示する意味がないのです
  • 2:07 - 2:11
    本来やりたいのは
    コーヒーの杯数の増減に従って―
  • 2:11 - 2:15
    変化しつづける数量を使うことです
  • 2:15 - 2:18
    ですから 料金計算をするべきはそれです
  • 2:18 - 2:22
    コードを修正するにあたって
    ローカル量変数を示すべきではありません
  • 2:22 - 2:25
    グローバル量変数だけを使うべきです
  • 2:25 - 2:29
    また スクリーン上の数量を
    更新する試みを止めるべきです
  • 2:29 - 2:31
    + (プラス)と - (マイナス)ボタンが
    既に適切な値を―
  • 2:31 - 2:34
    スクリーン上に更新する操作をしています
  • 2:34 - 2:38
    しかし submitOrder ボタンによっても
    料金が更新されてほしいのです
  • 2:38 - 2:42
    でも 今回はグローバル量変数を使って―
  • 2:42 - 2:44
    数量 × 5 の計算をします
  • 2:44 - 2:48
    このコードを上書きすると
    今 話したことが反映されます
  • 2:48 - 2:51
    この量変数が紫色になっているか
    気を付けてください
  • 2:51 - 2:55
    これはつまり MainActivity 内で
    グローバル量変数を使っているという意味です
  • 2:55 - 2:58
    ボタンが押されると
    submitOrder メソッドの引き金になり―
  • 2:58 - 3:00
    スクリーン上に料金が表示されます
  • 3:00 - 3:04
    その料金はグローバル量変数 × 5 で
    計算されています
  • 3:05 - 3:07
    良さそうですので
    デバイスで実行しましょう
  • 3:08 - 3:10
    最終テストの時間です
  • 3:10 - 3:13
    数量を 6 に変えて
    Order ボタンを押すと
  • 3:13 - 3:15
    やったー!
    $30 になっています
  • 3:15 - 3:18
    まぐれではないことを確かめるために
    他の数量でも試します
  • 3:18 - 3:21
    合ってます
    これもあってます
  • 3:21 - 3:23
    良いですね!
    ちゃんと動作します
  • 3:23 - 3:24
    最初のバグを修正しました
  • 3:24 - 3:26
    とてもよくできました
  • 3:26 - 3:29
    アプリの機能が
    とても適切に動いています
  • 3:29 - 3:32
    でも ユーザーインターフェイス( UI )が
    少し殺風景なのは認めざるをえません
  • 3:32 - 3:36
    特に この数量調節ボタンは
    UI を愛らしくできます
  • 3:36 - 3:37
    次はそれについてやりましょう
Title:
05-39 Fix the Order Button - Solution
Description:

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

Japanese subtitles

Revisions Compare revisions