猫型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
-

執筆者:

関連記事

クリックリスナーが使えない

急に 型 View のメソッド setOnClickListener(View.OnClickListener) は引数 (MainActivity.btnClickListener) に適用できませ …

バインドを利用したservice

バインドを利用しないserviceもありますが、serviceは勝手に動き続けるか、自動的に停止するようにするかになります。 実際にはバインドを利用してserviceが起動している時にもアクションを連 …

Micro USB の充電用とデータ転送用

以前 「SonyEricssonXPERIA SO-01Bのドライバのインストール」 というものを書きました。 このどうしようもない端末は、MicroUSBにも問題があります。 しかもこの端末、古すぎ …

ListView(2行)

ListViewの各行に2行表示させるには、ListActivityをextendします。 また、かくリストのデータはmapで設定します。 TestActivity.java package com. …

SQLiteにadbでアクセスする

コマンドプロンプトでadbのあるディレクトリまでcdで移動します。 私の場合はD:\Users\xxx\android-sdks\platform-tools にしてあります。 # d: # cd D …