猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

Android

layoutのxmlに配置したボタンにクリックイベントを追加する

投稿日:2013年3月4日 更新日:

ボタンなどのビューは、コードで記述することもできますが、
やはりres/layout/xxx.xmlで作成するのが一般的です。
xmlで作成したビューに、はアクティビティのonCreateでリスナーを追加して、クリックイベントを受信できるようにするのがよいでしょう。

xml

res/layout/xxx.xmlで作成したビューには、アクティビティからアクセスできるようにidを付ける必要があります。

<?xml version="1.0" encoding="utf-8">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" &gt;
    <TextView
        android:id="@+id/txtView1"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
        /&gt;
</LinearLayout&gt;

アクティビティ

xmlを編集して保存すると、このidはgen/xxx/R.javaに自動で登録されます。
findViewByIdを使って、R.javaにあるidを通してビューにアクセスできるようになります。

クリックイベントの実際の処理は、OnClickListenerインターフェイスをimplementsして実装します。
サンプルでは、複数ボタンがあった場合に、一つのリスナーで処理できるように、tagに名前を設定しています。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.xxx);
        ・・・・・・・
        Button btnTest = (Button)findViewById(R.id.txtView1);
        btnQuest.setTag("btnTest");
        btnQuest.setOnClickListener(new btnClickListener());
        ・・・・・・・
    }

    class btnClickListener implements OnClickListener{
		public void onClick(View v) {
			String btnName = (String)v.getTag();
			if(btnName.equals("btnTest")){
                                   //ここにボタンクリック時の処理				
			}else if(btnName.equals("btnTest2")){
                                   //ここにボタンクリック時の処理
			}
		}
    }

Gooleアドセンス用336

Gooleアドセンス用336

-Android
-

執筆者:

関連記事

layoutのxmlに配置したListViewをアクティビティで操作する

ListViewの操作にはadapterを使用します。 INDEX1 xml2 アクティビティ3 単純な呼び出し4 結果を受信する呼び出し xml ListViewにアクセスできるようにidを付けてお …

AlarmManagerで定期処理を行う

私のやりたいことは、定期的にあるアクションが起動するアプリの作成です。 serviceでいいかと思っていたのですが、何故か画面がスリープした状態で停止します。 そこでAlarmManagerを使用する …

別スレッドから画面を制御するhandlerの使い方

別スレッドから画面(layout)を制御するにはhandlerを使用します。 制御したい画面を持つアクティビティに、handerの宣言をします。 宣言したhandlerはsendMessageメソッド …

SonyEricssonXPERIA SO-01Bのドライバのインストール

二度とこの古い機種を接続することはないと思うのですが、 それだけに貴重な情報と思いメモしておきます :x002: adb で確認するとどうしても認識されません。 >adb devices Lis …

SQLiteに普通のselectを実行する

rawQueryメソッドを使用すれば、通常のselect分が利用できます。 取得したデータはカーソルを使って読み込みます。 ・・・ DBHelper helper = new DBHelper(Tes …