亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android按鈕單擊事件的四種常用寫法總結

2020-04-11 11:44:01
字體:
來源:轉載
供稿:網友

很多學習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程序設計的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩一区在线| 国产精品盗摄久久久| 久久久www成人免费精品张筱雨| 亚州欧美日韩中文视频| 2020久久国产精品| 久久夜精品va视频免费观看| 啊v视频在线一区二区三区| 亚洲国产日韩精品在线| 亚洲字幕在线观看| 亚洲欧美制服中文字幕| 欧美视频免费在线观看| 亚洲天天在线日亚洲洲精| 国内免费久久久久久久久久久| 17婷婷久久www| 久久亚洲国产精品成人av秋霞| 成人免费视频在线观看超级碰| 国产精品视频一区国模私拍| 亚州欧美日韩中文视频| 91精品国产自产在线观看永久| 国产精品va在线播放| 久久久久久久久久久国产| 精品小视频在线| 亚洲欧美激情精品一区二区| 夜色77av精品影院| 久久久噜噜噜久久| 国产盗摄xxxx视频xxx69| 日韩电影免费观看中文字幕| 日本三级韩国三级久久| 欧美一级在线亚洲天堂| 亚洲片在线资源| 91精品国产91久久久久福利| 亚洲成人性视频| 亚洲最大中文字幕| 日韩在线播放一区| 久久久精品久久久久| 亚洲视频精品在线| 中文字幕在线成人| 免费av一区二区| 2019中文字幕在线免费观看| 国产精品av在线播放| 57pao国产成人免费| 亚洲男人的天堂网站| 九九热精品视频在线播放| 91av福利视频| 精品亚洲一区二区三区在线观看| 久久久久亚洲精品成人网小说| 国产精品白嫩美女在线观看| 亚洲国产高清高潮精品美女| 欧美午夜女人视频在线| 国产精品一区二区三区久久久| 在线播放精品一区二区三区| 精品国偷自产在线视频| 91精品国产高清自在线看超| 久久久久久久久91| 国产日韩中文字幕在线| 欧美一区二区三区四区在线| 久久精品国产成人精品| 欧洲日本亚洲国产区| 成人黄色av网站| www.久久久久久.com| 欧美日韩在线免费观看| 欧美乱大交xxxxx| 91精品国产综合久久久久久久久| 午夜精品一区二区三区在线| 欧美老女人性视频| 91亚洲精品一区二区| 亚洲tv在线观看| 亚洲美腿欧美激情另类| 日韩毛片在线观看| 日韩av一卡二卡| 亚洲国产欧美一区二区三区久久| 亚洲va码欧洲m码| 曰本色欧美视频在线| 亚洲欧美一区二区三区情侣bbw| 中文字幕综合在线| 91亚洲精品一区| 中文字幕日韩综合av| 日韩电影免费在线观看| 久久亚洲国产精品| 日韩欧美黄色动漫| 欧美黑人xxxx| 国产精品欧美激情在线播放| 高潮白浆女日韩av免费看| 韩国三级电影久久久久久| 精品久久久久久久久久久久| 亚洲日韩欧美视频一区| 国产精品白嫩初高中害羞小美女| 国产在线久久久| 日韩av在线免费看| 97精品久久久中文字幕免费| 成人情趣片在线观看免费| 亚洲国产中文字幕在线观看| 亚洲图片在区色| 欧美天堂在线观看| 国产精品羞羞答答| 久久久成人精品视频| 国产精品视频一区国模私拍| 精品性高朝久久久久久久| 久久99热精品这里久久精品| 68精品国产免费久久久久久婷婷| www.久久久久久.com| 欧洲亚洲免费视频| 91精品视频播放| 久久天天躁狠狠躁夜夜躁| 亚洲第一区在线观看| 欧美综合第一页| 日本一区二区三区四区视频| 日本19禁啪啪免费观看www| 成人综合网网址| 日韩精品极品在线观看播放免费视频| 欧美国产高跟鞋裸体秀xxxhd| 26uuu日韩精品一区二区| 国内外成人免费激情在线视频网站| 欧美肥老妇视频| 国外成人在线视频| 国产精品一区二区三区久久| 91tv亚洲精品香蕉国产一区7ujn| 亚洲a一级视频| 国产精品亚洲аv天堂网| 久久久噜噜噜久久中文字免| 一区二区三区动漫| 久久人人爽亚洲精品天堂| 国产精品免费一区| 亚洲国产欧美一区二区三区久久| 亚洲美女av在线播放| 亚洲自拍偷拍一区| 日韩电影中文字幕| 国产精品久久久久久久av电影| 国自产精品手机在线观看视频| 97国产精品免费视频| 色偷偷亚洲男人天堂| 亚洲欧美综合区自拍另类| 日韩av在线网页| 国产精品一区二区电影| 国产+成+人+亚洲欧洲| 欧美大秀在线观看| 最近2019好看的中文字幕免费| 97在线观看免费| 欧美性xxxx极品高清hd直播| 亚洲a级在线观看| 久久视频国产精品免费视频在线| 久久国产精品久久久久久久久久| 欧美久久精品午夜青青大伊人| 久久久久久久久久久网站| 国产美女直播视频一区| 国产成人综合亚洲| 久久久久久久国产精品视频| 一本一本久久a久久精品牛牛影视| 国产精品va在线| 中文字幕日韩视频| 国产精品视频专区| 日韩精品在线私人| 欧美大全免费观看电视剧大泉洋| 国产精品综合久久久| 在线日韩日本国产亚洲| 久久久国产精品视频| 亚洲理论在线a中文字幕| 久久九九国产精品怡红院| 97香蕉久久超级碰碰高清版| 91精品久久久久久久久久久| 色综合男人天堂| 欧洲永久精品大片ww免费漫画| 26uuu另类亚洲欧美日本老年| 久久国产精品电影|