亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2014年09月18日 11:11:23   投稿:shichen2014  
這篇文章主要介紹了Android按鈕單擊事件的四種常用寫(xiě)法總結(jié),比較了常見(jiàn)的四種寫(xiě)法的優(yōu)劣,有不錯(cuò)的參考借鑒價(jià)值,需要的朋友可以參考下

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

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對(duì)不同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;
    }
  }
}

最后一種是我今天看到的一種寫(xiě)法,在XML文件中“顯示指定按鈕的onClick屬性,這樣點(diǎn)擊按鈕時(shí)會(huì)利用反射的方式調(diào)用對(duì)應(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+/ 會(huì)有 onClick 屬性的提示, 但輸入到 android:onClick=“ 的地方按下 Alt+/ 并沒(méi)有提示 onClick 選項(xiàng),讓我突然覺(jué)得這里好像有點(diǎn)問(wè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);
  }

  // 注意 這里沒(méi)有 @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;
    }
  }
}

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

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

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

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

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

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

相關(guān)文章

最新評(píng)論