Activityクラスの基本を理解しよう! (7/8)
作成:2009-12-27 18:33
更新:2010-05-11 11:07
更新:2010-05-11 11:07
■ソースコードを調べてみよう
では、ソースコードで行っていることを順に説明していきましょう。まずは、クラスに用意されたフィールドについてです。これらのものですね。
これらのコンポーネントは、以下のようにしてオブジェクトを作成しフィールドに設定しています。
引数に指定しているIDは、R.javaに自動生成されたidクラスのフィールドです。Rクラスを介して、XMLのコンポーネントとJavaのインスタンスが関連付けられるようになっているわけです。
その後には、ボタンへのイベント処理の設定を行っています。
ここでは、editの「getText」でテキストを取り出し、これを加工してtextの「setText」でテキスト表示をさせています。が、ここでちょっと注意しておきたいのは、「getTextで得られるのはStringではない」という点です。
これは、android.textパッケージの「Editable」クラスというもののインスタンスです。見たところ、Stringと同じように使っていますね。基本的な使い方はStringとほぼ同じなのですが、あくまで「androidに用意された独自のテキスト用オブジェクト」である、という点は忘れないでください。
private Button button;XMLでレイアウトに組み込んだコンポーネントは、Java側ではandroid.widgetパッケージの「TextView」「EditText」「Button」といったクラスのインスタンスとして扱われます。onCreateでは、コンポーネント関係のインスタンスを、用意したフィールドに設定します。こうして用意されたオブジェクトを操作することで、レイアウトしたコンポーネントをプログラム内から扱えるようになるのです。
private EditText edit;
private TextView text;
これらのコンポーネントは、以下のようにしてオブジェクトを作成しフィールドに設定しています。
button = (Button)this.findViewById(R.id.button);これらのインスタンスは、Activity内(つまりthis内)にある「findViewById」というメソッドを利用して取得します。これは、引数に指定したIDのコンポーネントを示すインスタンスを得るものです。いずれも「new ○○」というように直接インスタンスを作成するのではなく、あくまで「Activityから受け取る」ようになっているのですね。
edit = (EditText)this.findViewById(R.id.edit);
text = (TextView)this.findViewById(R.id.text);
引数に指定しているIDは、R.javaに自動生成されたidクラスのフィールドです。Rクラスを介して、XMLのコンポーネントとJavaのインスタンスが関連付けられるようになっているわけです。
その後には、ボタンへのイベント処理の設定を行っています。
button.setOnClickListener(new MyClickAdapter());ボタンクリック時のイベント処理は、「setOnClickListener」というメソッドで設定をします。これは引数にOnClickListenerインターフェイスを実装したクラスを指定します。ここでは、MyClickAdapterという内部クラスを用意して利用していますね。これは以下のように定義されています。
class MyClickAdapter implements OnClickListener {このOnClickListenerインターフェイスでは、「onClick」というメソッドが1つだけ用意されています。これが、クリックされたときの処理を行うものになります。引数には、イベントが発生したViewインスタンスが渡されます。
@Override
public void onClick(View v) {
Editable s = edit.getText();
text.setText("こんにちは、" + s + "さん。");
}
}
ここでは、editの「getText」でテキストを取り出し、これを加工してtextの「setText」でテキスト表示をさせています。が、ここでちょっと注意しておきたいのは、「getTextで得られるのはStringではない」という点です。
これは、android.textパッケージの「Editable」クラスというもののインスタンスです。見たところ、Stringと同じように使っていますね。基本的な使い方はStringとほぼ同じなのですが、あくまで「androidに用意された独自のテキスト用オブジェクト」である、という点は忘れないでください。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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 + "さん。"); } }
※関連コンテンツ