シンプルな計算アプリを作成する - 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の積極的な活用にも取り組み中。
とっても恥ずかしがり。