2012年05月31日

様々なクリックイベント処理


前回はイベント処理について書きました
ウィジェットのイベント処理
また前回と同様のイベント処理を様々な記述方法によって実行してみたいと思います

無名クラスを使う
前回のイベント処理の簡略化のためjavaの無名クラスを使って実装する方法があります
Javaではクラスに名前を付けずに利用することができます
その方法で宣言された内部クラスは名前を持たないので無名クラスです
匿名クラス無名内部クラスなんて言い方もします
プログラムの簡略化はできますが・・・明示的なextendsやimplementsを持つこともできません
これを継承するクラスを作成できません
こういったいくつかの制限がありますがソースを簡略化し見やすくするメリットもあります
簡単な動作なら無名クラスを使うのも選択肢の一つです
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

 


public class MainActivity extends Activity {
	
	
	//RadioGroup group;

	@Override
	public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
		
		//テキストビュー作成
        TextView tv = new TextView(this);
        tv.setText("イベント発生前");
        setContentView(tv);
        //無名クラスを利用
       tv.setOnClickListener(new View.OnClickListener() {
               public void onClick(View v) {
                   ((TextView)v).setText("クリックイベントが発生しました。");
               }
           });
       }
}
実行結果は前回と同様でクリックするとテキストビューの文字が変更する仕様です


アクティビティにimplements
アクティビティクラスにイベントリスナ-をインプリメントすることで
自分自身のクラスにOnClickListenerインタフェースを実装することもできます
この時setOnClickListenerの引数にはOnClickListenerインターフェースを実装したクラスのオブジェクトを指定しますが
自分自身のクラスで実装していますので“this”を指定します
MainActivity.java
package blog.test;

 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
 
public class MainActivity extends Activity implements View.OnClickListener {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         
        TextView tv = new TextView(this);
        tv.setText("イベント発生前");
        setContentView(tv);
         
        tv.setOnClickListener(this);
    }
     
    public void onClick(View v) {
        ((TextView)v).setText("クリックイベントが発生しました");
    }
}
最初に Activity implements View.OnClickListenerでActivityに実装しています
実行結果は前回同様なので省きます

スポンサードリンク

posted by kenken at 11:19 | Comment(0) | TrackBack(0) | イベント イベント処理 | このブログの読者になる | 更新情報をチェックする

イベントとは・・・


RPGなどでよく聞く用語としてイベントというものがあります
これはユーザーや自身の任意のタイミングでなにかを起こすといったことにに当たります
具体的には使用者が“タッチした”“傾けた”“ボタンを押した”等の行動を起こしたり
自分で設定した“10分経過”などが起こったら
なんらかのアクションを起こすことをイベントといいます

ウィジェットのイベント処理
アンドロイドでウィジェットのイベントの処理をおこなうには
イベントリスナーと呼ばれるインターフェースインプリメントしたクラスを作成して
このクラスをウィジェットと結び付けます
インプリメントとは・・・
そのインターフェイスをクラス内で使用できるよう
適応させることになります
わかりやすくたとえると
パソコン(クラス)にプリンタードライバ(インターフェイス)をインストール(インプリメント
という感じですw
イベント処理を記述するクラスにView.OnClickListenerインターフェースをインプリメント
setOnClickListenerを使ってこのクラスと結びつけます
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

 


public class MainActivity extends Activity {
	
	
	//RadioGroup group;

	@Override
	public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
		
		//テキストビュー作成
        TextView tv = new TextView(this);
        tv.setText("イベント発生前");
        setContentView(tv);
        //ClickListenerと結びつける
        tv.setOnClickListener(new ClickListener());
    }
}

//OnClickListenerをインプリメントしたオリジナルのクラス作成
class ClickListener implements View.OnClickListener {
    public void onClick(View v) {
        ((TextView)v).setText("クリックイベントが発生しました");
    }
}
これはTextViewがクリックされた時にonClickメソッドが呼び出され
クリックされたTextViewの文字を変更させています
device122.png

TextViewをクリックすると・・・
device123.png

イベント処理は通常Viewクラスの引数を持ち
その値はイベントの発生源となったオブジェクトを指しています
今回の場合は“tv”すなわちクリックされたテキストビューのことです
スポンサードリンク

posted by kenken at 10:09 | Comment(0) | TrackBack(0) | イベント イベント処理 | このブログの読者になる | 更新情報をチェックする