Android按鈕單擊事件的四種常用寫法總結(jié)
很多學(xué)習(xí)Android程序設(shè)計(jì)的人都會發(fā)現(xiàn)每個(gè)人對代碼的寫法都有不同的偏好,比較明顯的就是對控件響應(yīng)事件的寫法的不同。因此本文就把這些寫法總結(jié)一下,比較下各種寫法的優(yōu)劣,希望對大家靈活地選擇編碼方式可以有一定的參考借鑒價(jià)值。
xml文件代碼如下:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2" />
四種方法分述如下:
匿名內(nèi)部類:
public class TestButtonActivity extends Activity {
Button btn1, btn2;
Toast tst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);
tst.show();
}
});
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);
tst.show();
}
});
}
}
自定義單擊事件監(jiān)聽類:
public class TestButtonActivity extends Activity {
Button btn1, btn2;
Toast tst;
class MyClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);
tst.show();
break;
case R.id.button2:
tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);
tst.show();
break;
default:
break;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(new MyClickListener());
btn2.setOnClickListener(new MyClickListener());
}
}
Activity繼承View.OnClickListener,由Activity實(shí)現(xiàn)OnClick(View view)方法,在OnClick(View view)方法中用switch-case對不同id代表的button進(jìn)行相應(yīng)的處理
public class TestButtonActivity extends Activity implements OnClickListener {
Button btn1, btn2;
Toast tst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
btn1 = (Button) findViewById(R.id.button1);
btn2 = (Button) findViewById(R.id.button2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);
tst.show();
break;
case R.id.button2:
tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);
tst.show();
break;
default:
break;
}
}
}
最后一種是我今天看到的一種寫法,在XML文件中“顯示指定按鈕的onClick屬性,這樣點(diǎn)擊按鈕時(shí)會利用反射的方式調(diào)用對應(yīng)Activity中的click()方法”
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Button1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Button2" />
這里在輸完android:的時(shí)候按下 Alt+/ 會有 onClick 屬性的提示, 但輸入到 android:onClick=“ 的地方按下 Alt+/ 并沒有提示 onClick 選項(xiàng),讓我突然覺得這里好像有點(diǎn)問題。
public class TestButtonActivity extends Activity {
Button btn1, btn2;
Toast tst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_button);
}
// 注意 這里沒有 @Override 標(biāo)簽
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);
tst.show();
break;
case R.id.button2:
tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);
tst.show();
break;
default:
break;
}
}
}
這種寫法整個(gè)代碼中都不用聲明button就可以實(shí)現(xiàn)button的單擊事件。
以上就是四種實(shí)現(xiàn)按鈕單擊事件的方法。
粗略總結(jié)一下,就是按鈕少的時(shí)候用匿名內(nèi)部類會比較快,比如寫demo測試的時(shí)候或者登陸界面之類的。
按鈕多的情況我還是選擇第三種方法,方便。
關(guān)于第四種方法,我感覺最方便,但看了很多代碼還是覺得寫法不夠大眾化,感興趣的朋友可以對此研究研究。相信會有不少收獲。
希望本文所述對大家Android程序設(shè)計(jì)的學(xué)習(xí)有所幫助。
- Android基礎(chǔ)之使用Fragment控制切換多個(gè)頁面
- 六款值得推薦的android(安卓)開源框架簡介
- android TextView設(shè)置中文字體加粗實(shí)現(xiàn)方法
- Android應(yīng)用開發(fā)SharedPreferences存儲數(shù)據(jù)的使用方法
- Android 動(dòng)畫之TranslateAnimation應(yīng)用詳解
- android壓力測試命令monkey詳解
- android調(diào)試工具DDMS的使用詳解
- Android 動(dòng)畫之ScaleAnimation應(yīng)用詳解
- Android Hilt的使用以及遇到的問題
相關(guān)文章
什么是Android靜默拍攝 Android靜默拍攝app制作方法
這篇文章主要告訴大家什么是Android靜默拍攝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Android開發(fā)中模仿qq列表信息滑動(dòng)刪除功能
這篇文章主要介紹了Android開發(fā)中模仿qq列表信息滑動(dòng)刪除功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
Android中Android Virtual Device(AVD)使用教程
這篇文章主要介紹了Android中Android Virtual Device(AVD)使用教程,本文還對使用過程中發(fā)生的一些錯(cuò)誤給出了處理方法,需要的朋友可以參考下2015-01-01
android開發(fā)環(huán)境中SDK文件夾下的所需內(nèi)容詳解
在本篇文章里小編給大家整理的是關(guān)于android開發(fā)環(huán)境中SDK文件夾下的所需內(nèi)容詳解,有興趣的朋友們參考學(xué)習(xí)下。2019-09-09
Android實(shí)現(xiàn)購物車添加商品動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)購物車添加商品動(dòng)畫,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Android 5.0中CoordinatorLayout的使用技巧
這篇文章主要為大家詳細(xì)介紹了Android 5.0中CoordinatorLayout的使用技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Android開發(fā)中調(diào)用系統(tǒng)相冊上傳圖片到服務(wù)器OPPO等部分手機(jī)上出現(xiàn)短暫的顯示桌面問題的解決方法
這篇文章主要介紹了Android開發(fā)中調(diào)用系統(tǒng)相冊上傳圖片到服務(wù)器OPPO等部分手機(jī)上出現(xiàn)短暫的顯示桌面問題的解決方法,需要的朋友可以參考下2016-12-12

