libro
www.tuyano.com
Google androidプログラミング入門

Activityクラスの基本を理解しよう! (7/8)

作成:2009-12-27 18:33
更新:2010-05-11 11:07

■ソースコードを調べてみよう

では、ソースコードで行っていることを順に説明していきましょう。まずは、クラスに用意されたフィールドについてです。これらのものですね。
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のコンポーネントを示すインスタンスを得るものです。いずれも「new ○○」というように直接インスタンスを作成するのではなく、あくまで「Activityから受け取る」ようになっているのですね。

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

その後には、ボタンへのイベント処理の設定を行っています。
button.setOnClickListener(new MyClickAdapter());
ボタンクリック時のイベント処理は、「setOnClickListener」というメソッドで設定をします。これは引数にOnClickListenerインターフェイスを実装したクラスを指定します。ここでは、MyClickAdapterという内部クラスを用意して利用していますね。これは以下のように定義されています。
class MyClickAdapter implements OnClickListener { 
  @Override
  public void onClick(View v) {
    Editable s = edit.getText();
    text.setText("こんにちは、" + s + "さん。");
  }
}
このOnClickListenerインターフェイスでは、「onClick」というメソッドが1つだけ用意されています。これが、クリックされたときの処理を行うものになります。引数には、イベントが発生したViewインスタンスが渡されます。

ここでは、editの「getText」でテキストを取り出し、これを加工してtextの「setText」でテキスト表示をさせています。が、ここでちょっと注意しておきたいのは、「getTextで得られるのはStringではない」という点です。

これは、android.textパッケージの「Editable」クラスというもののインスタンスです。見たところ、Stringと同じように使っていますね。基本的な使い方はStringとほぼ同じなのですが、あくまで「androidに用意された独自のテキスト用オブジェクト」である、という点は忘れないでください。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

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 + "さん。");
    }
}
※関連コンテンツ

「Google androidプログラミング入門」に戻る