由來:常規的寫法參見《寫一個apk》,每次點擊按鈕,按鈕先查找文本框等元素,而後再操做,其實查找操做是很費時的操做,所以將該定義放到Activity的onCreate中:Oncreate只會執行一次,這樣Activity一旦執行,就先建立好控件們了。android
第二種方法:經過匿名內部類的方法:就是button.setOnClickListener(new OnClickListener(){ide
//實現OnClickListener接口佈局
@Overridethis
public void onClick(View v){xml
String number = mEditText.getText().toString();對象
Log.i(tag,number); //這個是說,在運行時,log框裏面有個tag標籤,若是裏面輸出的是MainActivity,遇到電話號碼時候,就輸出了;接口
Log.i(tag,「匿名內部類」); //這句打印出來就是,調用到匿名內部類時候,打印輸出「匿名內部類」這幾個字。事件
//撥打電話號碼get
Intent intent = new Intent();it
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
//android裏面
startActivity(intent);
}
));
方法三:企業裏經常使用的方法---讓MainActivity做爲實現者,實現按鈕註冊的點擊事件。企業這麼寫,是由於界面上一般好幾十個按鈕,若是每一個按鈕都用匿名內部類方法寫,很不方便;用這種方法,只須要多寫幾個switch分支便可。
1. button.setOnClickListener(this);
2. 添加mainActivity implements OnClickLIstener()實現接口
3. 增長實現接口的方法
public void onCclick(View v){
//參數v 表明的就是當前被點擊的條目 對應的view對象
//下面進行判斷,若是v獲取的id,就是R.id.bt_dail,就算OK
switch(v.getId()){
case R.id.bt_dail:
//響應按鈕的點擊事件,具體呢就是把上面的那段代碼貼過來,便可
String number = mEditText.getText().toString();
Log.i(tag,number); //這個是說,在運行時,log框裏面有個tag標籤,若是裏面輸出的是MainActivity,遇到電話號碼時候,就輸出了;
Log.i(tag,「匿名內部類」); //這句打印出來就是,調用到匿名內部類時候,打印輸出「匿名內部類」這幾個字。
//撥打電話號碼
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
//android裏面
startActivity(intent);
}
}
方法四:在laytout的佈局xml中,把按鈕的點擊事件,綁定到某個方法上:
1. <Button
android:onClick="dail" />
2. 在MainActivity裏定義dail方法:
public void dail(View view){
//裏面仍是那段代碼,放到這裏來了
String number = mEditText.getText().toString();
Log.i(tag,number); //這個是說,在運行時,log框裏面有個tag標籤,若是裏面輸出的是MainActivity,遇到電話號碼時候,就輸出了;
Log.i(tag,「匿名內部類」); //這句打印出來就是,調用到匿名內部類時候,打印輸出「匿名內部類」這幾個字。
//撥打電話號碼
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
//android裏面
startActivity(intent);
}
咱們知道,全部的控件均可以被click,就拿TextView來講,須要在佈局文件中添加兩句話才能夠:
<TextView
android:Onclick = "textview_click"
android:clickable = "true"/>
而後在mainActivity中添加該方法:
public void textview_click(View view){
Log.i(tag,"文本框被點擊了");
}