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

ボタンなどのビューは、コードで記述することもできますが、
やはり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")){
                                   //ここにボタンクリック時の処理
			}
		}
    }
タイトルとURLをコピーしました