Hatena::Groupandroid

lnzntの Android 日記 このページをアンテナに追加 RSSフィード

2012年04月08日(日)

クリックハンドラの別の書き方

02:24 | クリックハンドラの別の書き方 - lnzntの Android 日記 を含むブックマーク はてなブックマーク - クリックハンドラの別の書き方 - lnzntの Android 日記 クリックハンドラの別の書き方 - lnzntの Android 日記 のブックマークコメント

Hello のクリックハンドラの書き方を変えてみます。

(Android SDK 1.6 以降らしいですが)ClickHandler は別の書き方ができます。

HelloActivity.java

package com.example;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
//import android.view.View.OnClickListener; // 削除
//import android.widget.Button;             // 削除
import android.content.Intent;

public class HelloActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

/**** ここから削除  
        Button button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
        	public void onClick(View v) {
        		startActivity(new Intent(HelloActivity.this, SubActivity.class));
        	}
        });
ここまで削除 *****/
    }
    
    /* 以降を追加 */
    public void buttonClickHandler(View v) {
    	startActivity(new Intent(HelloActivity.this, SubActivity.class));
    }
}

ハンドラ(buttonClickHandler)はレイアウトファイルで関連付けます。

res/layout/main.xml の Button に 属性 android:onClick="buttonClickHandler" を追加します。

<?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" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button1_label"
        android:onClick="buttonClickHandler"/> <!-- 追加 -->
</LinearLayout>

----

こちらの書き方のほうが、すっきりしています。