Android 按鈕單擊事件的四種常用寫法總結
很多學習Android程式設計的人都會發現每個人對程式碼的寫法都有不同的偏好,比較明顯的就是對控制元件響應事件的寫法的不同。因此本文就把這些寫法總結一下,比較下各種寫法的優劣,希望對大家靈活地選擇編碼方式可以有一定的參考借鑑價值。
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" />
四種方法分述如下:
匿名內部類:
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(); } }); } }
自定義單擊事件監聽類:
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實現OnClick(View view)方法,在OnClick(View view)方法中用switch-case對不同id代表的button進行相應的處理
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屬性,這樣點選按鈕時會利用反射的方式呼叫對應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:的時候按下 Alt+/ 會有 onClick 屬性的提示, 但輸入到 android:onClick=“ 的地方按下 Alt+/ 並沒有提示 onClick 選項,讓我突然覺得這裡好像有點問題。
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 標籤 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; } } }
這種寫法整個程式碼中都不用宣告button就可以實現button的單擊事件。
以上就是四種實現按鈕單擊事件的方法。
粗略總結一下,就是按鈕少的時候用匿名內部類會比較快,比如寫demo測試的時候或者登陸介面之類的。
按鈕多的情況我還是選擇第三種方法,方便。
關於第四種方法,我感覺最方便,但看了很多程式碼還是覺得寫法不夠大眾化,感興趣的朋友可以對此研究研究。相信會有不少收穫。
希望本文所述對大家Android程式設計的學習有所幫助。
相關文章
- Android中點選事件的四種寫法詳解Android事件
- css中按鈕的四種狀態CSS
- Android--按鈕點選事件Android事件
- 13種常用按鈕、文字框、表單等CSS樣式CSS
- 單例模式常用的的兩種寫法單例模式
- 各種語言按鈕事件特徵碼事件特徵
- 微信小程式單擊事件與長按事件衝突的解決辦法微信小程式事件
- 新增按鈕事件事件
- 常用CSS縮寫語法總結CSS
- Android開發之onClick事件的三種寫法Android事件
- 回字有四種寫法,那你知道單例有五種寫法嗎單例
- 日常總結 --- 視訊播放按鈕
- android開發中單擊事件的多種實現方法Android事件
- 在MVVM模式中,按鈕Click事件的繫結方法MVVM模式事件
- 菜鳥學JS(四)——javascript為按鈕註冊回車事件(設定預設按鈕)JSJavaScript事件
- 面試突擊50:單例模式有幾種寫法?面試單例模式
- VUE按鈕啟用事件Vue事件
- Android 學習筆記四:建立工具欄按鈕Android筆記
- 四種博弈總結
- 單例的幾種寫法單例
- 設定按鈕失效的幾種方式簡單介紹
- QT經驗(一)——按鈕長按事件分析QT事件
- vue 表單驗證按鈕事件交由父元件觸發Vue事件元件
- 窗體(文字框,按鈕,單選按鈕,標籤)
- 花式寫單例之單例的六種寫法單例
- 迴圈註冊事件的幾種寫法事件
- 安卓Android 按鈕案例安卓Android
- Asp.net設定預設按鈕的方法總結ASP.NET
- [資料結構] 二分查詢 (四種寫法)資料結構
- 單例模式的六種寫法單例模式
- 單例模式的五種寫法單例模式
- 單例模式的七種寫法單例模式
- android處理單擊雙擊和滑動事件Android事件
- QT中使用Event Filter監聽按鈕事件,Release後按鈕不見QTFilter事件
- windows的錄音機視窗中單擊按鈕的作用是什麼Windows
- css的三種常用寫法是什麼CSS
- 單選多選按鈕
- Flutter總結之懸浮按鈕FloatingActionButton使用Flutter