findViewById(項目の入力と出力)
いよいよ、プログラムに手を付けます。
今まで、作成した項目(テキストボックスやボタン等)はAndroidではwidget(ウィジェット)と表現します。
各widgetごとにクラスをimportしておく必要があります。
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioGroup;
これが今回使用する分ですが、「そんなのわかんね~よ」という場合にはEclipseの便利な機能を使用します。
下図を参照してほしいのですが、該当するwidgetが使用するクラスをimportしていないとエラーとなります。矢印の部分をクリックするとエラーの解決候補が画面に表示されます。
たいていの場合はimport忘れなので、赤枠の部分をダブルクリックすると、import文がソースに挿入されます。
では、実際の入出力のコーディングですが
・final Button btn_entry = (Button) findViewById(R.id.btn_entry);
のように書きます。この例は画面上の「btn_entry」という名前のボタン情報を入力するコーディングです。テキストボックスの情報を得るには「Button」の部分を「EditText」に置き換えます。左側の変数「btn_entry」はワークエリアなので別に他の名前でもかまいません。右側の「btn_entry 」は「R.id.」にmain.xmlでandroid:id="@+id/btn_entry"と設定した名称の「btn_entry」を付けなければなりません。
他のwidgetは下記のようになります。
・final EditText text_name = (EditText) findViewById(R.id.text_name);
・final CheckBox ck_android = (CheckBox) findViewById(R.id.ck_android);
・final RadioGroup rg_sex = (RadioGroup) findViewById(R.id.rg_sex);
では、ワークエリアにセットされた値の取り出し方ですが、これは各widgetにより異なります。下記コーディングサンプルを参照してください。
private void entryResult() {
String entry_Naiyo;
/* テキストボックスの値取得 */
final EditText text_name = (EditText) findViewById(R.id.text_name);
entry_Naiyo="あなたは"+text_name.getText().toString()+"さんで";
/* チェックボックスの値取得 */
final CheckBox ck_android = (CheckBox) findViewById(R.id.ck_android);
if (ck_android.isChecked())
entry_Naiyo=entry_Naiyo + "Androidに興味がある";
else
entry_Naiyo=entry_Naiyo + "Androidに興味がない";
/* ラジオボタンの値取得 */
final RadioGroup rg_sex = (RadioGroup) findViewById(R.id.rg_sex);
switch (rg_sex.getCheckedRadioButtonId()) {
case R.id.rb_man:
entry_Naiyo=entry_Naiyo + "男性です。 ";
break;
case R.id.rb_woman:
entry_Naiyo=entry_Naiyo + "女性です。 ";
break;
}
/* テキストボックスに値をセット */
final EditText text_entry = (EditText) findViewById(R.id.text_entry);
text_entry.setText(entry_Naiyo);
}
最後の2行はテキストボックスに値を代入する方法です。
Javaでは、データの入出力に関して、下記のようなネーミングルールがありますので、コードを読むときに参考にしてください。
なお、「Xxxx」一文字目を大文字にするということを現しています。
・データを得る getXxxx
・データを書く setXxxx(またはputXxxxx)
次回はイベントリスナー(event listener)についてです。
0 件のコメント:
コメントを投稿