Programming Style

メニュー

初心者がアプリ開発者になるためのプログラミング学習サイト

[Android] テキストフィールドに入力された値をトースト表示する

android-common-top

今回のレッスンでは、前回のレッスンで追加したトーストメッセージに対してテキストフィールドに入力された値を表示するように変更します。

 

広 告

 

目次

前提条件

動作確認端末

  • Google Nexus 5 – 5.0.0 – API21(エミュレータ)

1. テキストフィールドで入力された値を取得する

アプリ画面のテキストフィールドで入力された値を取得するためには、まずテキストフィールド(EditText)をオブジェクトとしてプログラム内に読み込まなければなりません。画面部品をオブジェクトとしてプログラム内に読み込むためには、以下のような記述をします。

 

テキストフィールド(EditText)をプログラム内に読み込むコード

final EditText editText = (EditText) findViewById(R.id.edit_message);

findViewById()メソッドを使うと、引数にレイアウトXML(activity_main.xml)で定義したIDを設定することで、指定された画面部品のオブジェクトを取得することができます。

 

今回の場合は、R.id.edit_messageを設定することで画面のテキストフィールドが取得できます。

 

テキストフィールドのオブジェクトを取得できれば、このオブジェクトから画面で入力された文字を取得することができます。入力された文字を取得するためには、以下のように記述します。

 

テキストフィールドから入力された文字を取得するコード

final EditText editText = (EditText) findViewById(R.id.edit_message);
CharSequence message = editText.getText();

入力された文字を取得するためには、getText()メソッドを使用します。

 

2. 入力された文字をトーストに表示する

入力された文字をトーストに表示させるために、前回のレッスンで実装したトースト表示のコードを変更します。前回は”ボタンがクリックされました”という固定の文字を表示させていましたが、今回はこの部分をテキストフィールドから取得した値に置き換えます。

置き換えると以下のようなコードになります。

 

Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();

これまで説明したことをsendMessage()メソッド内で実装すると以下のようになります。

 

import android.widget.EditText;
…
public void sendMessage(View view) {
    // ボタンクリック時に実行される
    // 引数のViewはクリックされたボタンのViewオブジェクト
    final EditText editText = (EditText) findViewById(R.id.edit_message);
    CharSequence message = editText.getText();
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}

この状態でアプリを実行してみてください。テキストフィールドに入力された値がトーストメッセージとして表示されます。

 

android_android-toast-edittext_01

 

3. 文字が未入力の場合を考慮する

テキストフィールドに文字を入力せず空欄のままボタンをクリックすると空のトーストメッセージが表示されます。

 

android_android-toast-edittext_02

特にエラーが発生するわけではないため、このままでも問題があるわけではありませんが、見た目が少し不細工です。ここでは、文字が未入力の場合は、”未入力です”というトーストメッセージが表示されるように処理を追加しています。

 

「〜の場合は」という処理を実現するためには、if文を用います。If文は以下のように使います。

 

// 1
If(条件A) {
    //条件Aが成立した場合は実行されます。 
    // 2
}
// 3

条件Aには結果がYES(これをJavaプログラムではtrueといいます)かNO(これをJavaプログラムではfalseといいいます)のどちらかになるような処理を記述します。上記の場合、条件Aがtrueの場合は1→2→3の順番で処理が実行され、条件Bがfalseの場合は1→3の順番で処理が実行されることになります。

 

今回の場合は、if文を使って条件A部分に「テキストが入力済ですか」に相当する処理を記述する必要があります。具体的には以下のようなコードになります。

 

import android.text.TextUtils;
…
if (TextUtils.isEmpty(message)) {
    //未入力の場合
}

TextUtils.isEmpty()メソッドは、設定された値の文字が空(null or ブランク)であるかを判定するメソッドです。

 

テキストが未入力の場合は”未入力です”と表示させたいため、messageに設定さえている値を上書きする必要があります。

 

if (TextUtils.isEmpty(message)) {
    // 未入力の場合
    message = "未入力です";
}

以上をまとめるとsendMessage()メソッドは以下のような実装になります。

 

public void sendMessage(View view) {
    // ボタンクリック時に実行される
    // 引数のViewはクリックされたボタンのViewオブジェクト
    final EditText editText = (EditText) findViewById(R.id.edit_message);
    CharSequence message = editText.getText();
    if (TextUtils.isEmpty(message)) {
        // 未入力の場合
        message = "未入力です";
    }
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}

アプリを実行するとテキストが未入力の場合は、”未入力です”と表示されていることが確認できます。

 

android_android-toast-edittext_03

 

広 告