国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

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

2020-04-11 11:44:01
字體:
供稿:網(wǎng)友

很多學(xué)習(xí)Android程序設(shè)計的人都會發(fā)現(xiàn)每個人對代碼的寫法都有不同的偏好,比較明顯的就是對控件響應(yīng)事件的寫法的不同。因此本文就把這些寫法總結(jié)一下,比較下各種寫法的優(yōu)劣,希望對大家靈活地選擇編碼方式可以有一定的參考借鑒價值。

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實現(xiàn)OnClick(View view)方法,在OnClick(View view)方法中用switch-case對不同id代表的button進行相應(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à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:的時候按下 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 標(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;    }  }}

這種寫法整個代碼中都不用聲明button就可以實現(xiàn)button的單擊事件。

以上就是四種實現(xiàn)按鈕單擊事件的方法。

粗略總結(jié)一下,就是按鈕少的時候用匿名內(nèi)部類會比較快,比如寫demo測試的時候或者登陸界面之類的。

按鈕多的情況我還是選擇第三種方法,方便。

關(guān)于第四種方法,我感覺最方便,但看了很多代碼還是覺得寫法不夠大眾化,感興趣的朋友可以對此研究研究。相信會有不少收獲。

希望本文所述對大家Android程序設(shè)計的學(xué)習(xí)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江门市| 南溪县| 西乡县| 临颍县| 扶风县| 鸡东县| 昌图县| 新建县| 杭锦后旗| 江口县| 甘孜| 嫩江县| 镇江市| 静海县| 灵石县| 贵州省| 慈溪市| 甘泉县| 论坛| 北宁市| 宁化县| 邻水| 南乐县| 乌拉特前旗| 思南县| 攀枝花市| 奎屯市| 札达县| 胶州市| 东港市| 衡南县| 中西区| 四会市| 南乐县| 光泽县| 温州市| 沅陵县| 启东市| 曲麻莱县| 通城县| 南乐县|