android- Button點擊與監聽器處理

在android應用中,Button的點擊極爲常見,使用頻率非常的高。在事件點擊事件時我們需要爲Button綁定監聽器。android在實現Button點擊事件時提供了諸多方法,在這裏就不一一列舉,僅就幾種常用的方法給予討論。

一、匿名內部類作爲事件監聽器類。

有時候,當事件監聽器只需使用一次時,此時使用匿名內部類作爲事件監聽器類是最合適的,實際上,這種監聽器形式的使用確實是很廣泛的。

public class MainActivity extends Activity {
	private Button button = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button) findViewById(R.id.btn);
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Toast.makeText(MainActivity.this, "使用匿名內部類做爲監聽器", 0).show();
			}
		});
	}
二、內部類作爲監聽器

此方法是將事件監聽器類定義成當前類的內部類。1、使用內部類可以在當前類中複用監聽器類,因爲監聽器類是外部類的內部類,2、所以可以自由訪問外部類的所有界面組件。這也是內部類的兩個優勢。簡單地說是時間監聽器可以在不同的控件上再用,且實現非常簡單,只需加上一句button.setOnClickListener(new neibulei());即可,簡單應用。

public class MainActivity extends Activity {
	private Button button = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new neibulei());
	}
	private class neibulei implements OnClickListener {
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Toast.makeText(MainActivity.this, "使用內部類做爲監聽器", 0).show();
		}
	}
三、Activity本身作爲事件監聽器

此種辦法直接在Activity中定義事件處理器的方法。在Activity類實現了OnClickListener事件監聽接口,從而可以在該Activity類中直接定義事件處理器方法:onClick(view v),當爲某個組件添加該事件監聽器對象時,直接使用this作爲事件監聽器對象即可。

public class MainActivity extends Activity implements OnClickListener {
	private Button button = null;
	private Button button1 = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button = (Button) findViewById(R.id.button);
		button1 = (Button) findViewById(R.id.button1);
		button.setOnClickListener(MainActivity.this);
		button1.setOnClickListener(MainActivity.this);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.but:
			Toast.makeText(this, "使用activity本身作爲事件監聽器", 0).show();
			break;
		case R.id.but1:
			Toast.makeText(this, "使用activity本身作爲事件監聽器1", 0).show();
			
			break;

		default:
			break;
		}

	}

}

四、直接綁定到標籤

此方法是直接在布文件中爲監聽事件綁定標籤,實現也更爲簡單,如

<Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="點擊" 
        android:onClick="click"/>
之後在java文件中:

public class MainActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);	
	}

	public void click(View view){
		Toast.makeText(MainActivity.this, "直接綁定到標籤", 0).show();
	}
這四種方法較爲常用,其他的如外部類作爲監聽器等由於本人沒使用過,不是很熟悉,在這裏就不作介紹。

網上關於監聽器的總結也有很多,本文也是在筆者的學習之後寫的,難免會有很多大牛的文章的影子,如有不當之處,請指出。謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章