ハジカラ 〜はじめからでも、プログラミング勉強〜

入門向けに、IT関連(javaやKotlin)をコツコツ書いたり検証したりします。

【Mac・Android Studio】タップカウンターを作ってみる その4

calendar

reload

【Mac・Android Studio】タップカウンターを作ってみる その4

こんにちは。

過去3回やってきたタップカウンター作成の4回目です。

前回、動きはしたものの仕様通りに動かなかったので、そこの解決をしてみます✌

今まで使っていませんでしたが、Android Studioにもデバッグモードがありました。
デバッグモードを使うと、コード上にポイントを置くことで、
処理実行中にそこで止まってくれます。

そのまま1行ずつ処理を追っていったり、変数に入っている値を確認したりできます。
エラーが起きた際も、どこで何が起きて処理が落ちたのかを確認しやすいので便利です。
デバッグモードでカウントの値を見てみます。

↓ いつもは右上▶を押して起動しますが、今回はその右横の虫さんマークを押下します。
  この虫さんで起動することで、デバックモードとしてアプリが動きます。
  試しに適当な所にマークしているので、起動後そこで処理が止まっています。

タップ4−1

リセットボタンを押した後のカウントボタンの動きを見たいので、
MainActivity.javaのカウントボタンが押された時の処理内のコードに
ポイントしました。

↓ リセットボタンを押した後カウントボタンを押したので、
  以下の場所で処理が止まっています。
  数字をみると、0にはなっていないですね💦
  リセットボタンの処理とは別になっていて、ずっと同じ値を保持し続けるようです。
  (余談ですが、Android Studioだと値自体をコード上に表示してくれるんですね。)

タップ4−2

TextViewクラスに保持している値をクリアにするような関数もなさそうだし・・・、
それはそれで処理に困るか💧
ちょっとややこしくなりますが、処理を増やしましょう。

↓ メンバ変数は以下のように、判定用の変数を用意します。
  これはリセットボタンが押されたかどうかを判定します。

<メンバ変数>
 // ボタン
 Button button;
 // 画面
 TextView text;
 // リセットボタン
 Button rbutton;
 // 判定
 boolean hantei = false;
 

↓ 次にリセットボタンが押された時の処理は以下のように、
  先ほどの判定にtureをセットして処理を終了しています。

  // リセットボタンが押下された時の処理
  rbutton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
     // 0を持つ定数
     int num = 0;
     // 定数0を画面のテキスト情報にセット
     text.setText(String.valueOf(num));
     // リセットボタン押下後の判定
     hantei = true;
    }
  });
 

↓ 今回の主な改修部分です。
  リセットボタンが押された直後とそうでない場合の条件を追加しています。

  // ボタンが押下された時の処理
  button.setOnClickListener(new View.OnClickListener() {
    // 画面テキストを数字に変換して取得
    int num = Integer.parseInt(text.getText().toString());
    @Override
    public void onClick (View view) {
      // リセットボタンが押されていない場合
      if (!hantei) {
        // 画面テキスト数字に1を足す
        num = num + 1;
        // 上記の数字を文字の変換して、画面のテキスト情報にセット
        text.setText(String.valueOf(num));
       // リセットボタンが押された場合
      } else {
        // 1をセット
        num = 1;
        // 上記の数字を文字の変換して、画面のテキスト情報にセット
        text.setText(String.valueOf(1));
        // リセットボタンが押されていない状態に戻す
        hantei = false;
      }

    }
  });
 

これでエミュレータを起動してみましょう。

↓ 何回かタップします。
タップ4−3

↓ リセットボタンを押します。
タップ4−4

↓ タップします。
タップ4−5

ふぅ・・・・
カウント1になりました✌

↓ その後もタップしてもカウント1ずつ上がり続けます。
  成功です。
タップ4−6

ただ、動きはしたけれどこれでよかったのだろうか。。。
なんかまどろっこしいと言うか💦

もっとスッキリ書けるような気もします。

どなたかいい方法ありましたら教えてください😃

今日はここまで✋
次回はどうしようかな。

※タップカウンター作成記事一覧はこちら

この記事をシェアする

コメント

  • それで今試してたら、
    numに0 を代入するんじゃなくて、
    0が代入された変数を代入するとうまくいきました。
    kotlinなのでjavaでもそうかはわからないですけど…

    by java,kotlin入門者 2018年9月5日 1:41 AM

down コメントを残す