SyntaxHighlighter

2010年9月29日水曜日

Android解説 layout その5

Android layout 

event listener(イベントリスナー)

Androidではwidgetウィジェット)に対して、個々にイベント発生を知ることができます。イベントリスナーというのは、イベントが発生したときに呼び出されるメソッドを持っているオブジェクトのことです。Listenerクラスを事前にインポートしておく必要があります。
下記例は、「ボタンがクリックされた」というイベントですが、データが更新された、端末の縦横が変わった等、イベントにより「listener」が変わります。
     import android.view.View;
     import android.view.View.OnClickListener;
     btn_entry.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
      entryResult();
}
    });
最初の2行にあるimportが必要なクラスで「android.view.View.OnClickListener」は「android.view.View」を継承するクラスです。Javaの技術的な話もAndroidを利用してできないかなと考えていますが、今は、セットものとして覚えてください。
次の行は、ボタンがクリックされたというイベントが発生したときに「public void onClick(View v)」という実装クラスが処理を行います。これもセットものとして理解してください。
entryResult();は、自分で定義した関数です。
ここまでのソース中、独自項目は、この1行のみということです。
最後の「});」までが、イベント処理となっています。

では、ソース全文と実行結果をみてください。




課題として

・ラジオボタンのデフォルト設定の方法
・テキストボックスの非表示のしかた
が残りました。解決方法がわかりましたら、紹介したいと思います。


package jp.co.aicell;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.view.View;
import android.view.View.OnClickListener;

public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        /* ボタン イベントが発生 */
        final Button btn_entry = (Button) findViewById(R.id.btn_entry);
              btn_entry.setOnClickListener(new OnClickListener() {
               public void onClick(View v) {
                      entryResult();
               }
        });
    }
       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);
             
       }     
}

実行結果です。



0 件のコメント:

コメントを投稿