Javaプログラミング/Javaプログラミング関連情報

レイアウトと基本部品の利用(5ページ目)

androidではXMLでレイアウトを作成します。この基本を理解しましょう。

執筆者:掌田 津耶乃

ソースコードを修正する


では、これらのコンポーネントをJavaのソースコード内から利用をしてみましょう。ここでは、ボタンをクリックしたら、EditTextのテキストを調べ、これを利用してTextViewにテキストを表示する、ということを行ってみましょう。

package jp.allabout.android;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.util.CharSequences;
import android.view.View;
import android.view.View.*;
import android.widget.*;

public class MyAndy extends Activity {
  private Button button;
  private EditText edit;
  private TextView text;
  
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    
    // コンポーネントの設定
    button = (Button)this.findViewById(R.id.button);
    edit = (EditText)this.findViewById(R.id.edit);
    text = (TextView)this.findViewById(R.id.text);
    
    // イベント組み込み
    button.setOnClickListener(new MyClickAdapter());
  }
  
  // イベントクラス
  class MyClickAdapter implements OnClickListener {
    @Override
    public void onClick(View v) {
      Editable s = edit.getText();
      text.setText("こんにちは、" + s + "さん。");
    }
  }
}

テキストを書いてボタンをクリックするとメッセージが表示される。

ここでは、onCreateメソッドにいくつか処理を追加し、更にボタンをクリックしたときの処理を行うイベントリスナーを作成しています。まず、コンポーネントを保管するフィールドを定義しておきます。

private Button button;
private EditText edit;
private TextView text;


XMLでレイアウトに組み込んだコンポーネントは、Java側ではandroid.widgetパッケージの「TextView」「EditText」「Button」といったクラスのインスタンスとして扱われます。onCreateでは、コンポーネント関係のインスタンスを、用意したフィールドに設定します。

button = (Button)this.findViewById(R.id.button);
edit = (EditText)this.findViewById(R.id.edit);
text = (TextView)this.findViewById(R.id.text);


これらのインスタンスは、Activity内(つまりthis内)にある「findViewById」というメソッドを利用して取得します。これは、引数に指定したIDのコンポーネントを示すインスタンスを得るものです。

見ればわかるように、引数に指定しているIDは、R.javaに自動生成されたidクラスのフィールドになっていますね? このように、Rクラスを介して、XMLのコンポーネントとJavaのインスタンスが関連付けられるようになっているわけです。


  • 前のページへ
  • 1
  • 4
  • 5
  • 6
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます