シンプルな計算アプリを作成する - EditTextからの値の読み取り TextViewへの値の設定 - Android

シンプルな計算アプリを作成してEditTextコントロールやTextViewコントロールへのアクセス方法を紹介します。

プロジェクトの作成

Android アプリケーションプロジェクトを作成します。
[New Android Application]ダイアログボックスが表示されますので、以下を設定します。
  • Application Name: "SimpleCalc"
  • Project Name: "SimpleCalc"
  • Package Name: "com.iPentec.simplecalc"
  • Minimum Required SDK: "API 8: Android 2.2 (Froyo)"
  • Target SDK: "API 17: Android 4.2 (Jelly Bean)"
  • Compile With: "API 17: Android 4.2 (Jelly Bean)"
  • Theme: "Holo Light with Dark Action Bar"

UIのデザイン

MainActivityのレイアウトXMLファイルを開き下図の画面をデザインします。EditTextを2つ、ボタンを1つ、TextViewを1つ配置します。


EditTextはパレットの[TextFields]のカテゴリにある"abc"と表示されているウィジェットです。TextViewは[Form Widgets]カテゴリの"Large"と表示されているウィジェットです。ドラッグ&ドロップでフォームに配置します。

プロパティの設定

ボタンのプロパティを設定します。デザイナでボタンをクリックして選択し、右側の[Properties]ウィンドウから"On Click"プロパティの値に"button1_click"を設定します。

コード

ボタンがクリックされた際のコードを記述します。MainActivityに下記のコードを記述します。

MainActivity.java

package com.iPentec.simplecalc;

import android.R.string;
import android.os.Bundle;
import android.app.Activity;
import android.view.*;    //追加
import android.widget.*; //追加

public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }

  //ここから追加
  public void button1_click(View view){
    EditText editText1 = (EditText)findViewById(R.id.editText1);
    EditText editText2 = (EditText)findViewById(R.id.editText2);
    
    int a = Integer.parseInt(editText1.getText().toString());
    int b = Integer.parseInt(editText2.getText().toString());
    int c = a + b;
    
    TextView textView1 = (TextView)findViewById(R.id.textView2);
    textView1.setText(String.valueOf(c));
  }
}

解説

  public void button1_click(View view){
    EditText editText1 = (EditText)findViewById(R.id.editText1);
    EditText editText2 = (EditText)findViewById(R.id.editText2);
    
    int a = Integer.parseInt(editText1.getText().toString());
    int b = Integer.parseInt(editText2.getText().toString());
    int c = a + b;
    
    TextView textView1 = (TextView)findViewById(R.id.textView2);
    textView1.setText(String.valueOf(c));
  }
上記のコードはまとめて記述されているため、わかりやすくするため、分解したコードに置き換えます。

  public void button1_click(View view){
    EditText editText1 = (EditText)findViewById(R.id.editText1);
    EditText editText2 = (EditText)findViewById(R.id.editText2);

    String str1 = editText1.getText().toString();
    String str2 = editText2.getText().toString();
    int a = Integer.parseInt(str1);
    int b = Integer.parseInt(str2);
    int c = a + b;

    TextView textView1 = (TextView)findViewById(R.id.textView2);
    String str3 = String.valueOf(c);
    textView1.setText(str3);
  }
  • 2,3行目はウィジェットのインスタンスをリソースIDから取得します。
  • 5,6行目はEditTextコントロールから値を文字列形式で取得します。
  • 7,8行目はそれぞれのEditTextコントロールから取得した文字列を数値に変換します。
  • 9行目は変換した数値2つの和を取ります。
  • 11行目はTextViewのインスタンスをリソースIDから取得します。
  • 12行目は9行目の計算結果を文字列に変換します。
  • 13行目でTextViewコントロールに文字列を表示します。

リソースIDについて

リソースIDはデザイナ画面でコントロールを選択した際に[Properties]ウィンドウのIDに表示される値です。

実行結果

プロジェクトを実行します。下図左の画面が表示されます。テキストボックスに数値を入力し、ボタンをタップすると計算結果がTextViewに表示されます。

著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
掲載日: 2013-03-14
iPentec all rights reserverd.