Android中點選事件的四種寫法詳解

ElegantHedgehog發表於2020-09-27

Android中點選事件的四種寫法

  • 使用內部類實現點選事件
  • 使用匿名內部類實現點選事件
  • 讓MainActivity實現View.OnClickListener介面
  • 通過佈局檔案中控制元件的屬性 第一種方法:使用內部類

第一種

基本步驟如下:

  1. 新建一個MyOnClickListener類並實現View.OnClickListener介面
  2. 重寫View.OnClickListener介面中的OnClick(View view)方法
  3. 給Button繫結一個監聽器,並監聽一個點選事件

示例程式碼如下:

public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //繫結
  btn = (Button) findViewById(R.id.button);
  //使用內部類(實現OnClickListener)
  btn.setOnClickListener(new MyOnClickListener());
}

class MyOnClickListener implements View.OnClickListener{
  @Override
  public void onClick(View v) {
    Toast.makeText(this, "別點我", Toast.LENGTH_SHORT).show();
  }
}

第二種方法:使用匿名內部類

基本步驟如下:

    1. 給Button繫結一個監聽器,並監聽一個點選事件

    2. 在setOnClickListener方法中直接傳入一個OnClickListener物件,並實現OnClick方法
      示例程式碼如下:

public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  btn = (Button) findViewById(R.id.button);
  btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
         Toast.makeText(this, "別點我", Toast.LENGTH_SHORT).show();
      }
    });
  }
}

第三種方法:讓MainActivity直接實現View.OnClickListener介面

基本步驟如下:

  1. 讓MainActivity直接實現View.OnClickListener
  2. 在MainActivity類中重寫onClick方法
  3. 給Button繫結一個監聽器,並監聽一個點選事件。

注:此時setOnClickListener傳入的是this
示例程式碼如下:

public class MainActivity extends Activity implements OnClickListener {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  btn = (Button) findViewById(R.id.button);
  btn.setOnClickListener(this);
}
//實現OnClickListener介面中的onClick方法
@Override
public void onClick(View v) {
        Toast.makeText(this, "別點我", Toast.LENGTH_SHORT).show();
  }
}

第四種方法:通過佈局檔案中控制元件的屬性

基本步驟如下:

在activity_main.xml中給Button控制元件新增Android:onClick=”action”屬性

在Activity中實現action方法,action方法必須滿足如下三個條件:

(1) 方法的訪問修飾符必須是public

(2)方法的名稱必須跟android:onClick=”action” 中的名稱完全一致

(3)形參必須是View型別
示例程式碼如下:

public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  btn = (Button) findViewById(R.id.button);

}
//利用反射給button繫結一個監聽器,監聽點選事件
/**
 * 1:方法的訪問修飾符必須是public
 * 2:方法的名稱必須跟android:onClick="call" 中的名稱完全一致
 * 3:形參必須是View型別
 * 注:形參View其實就是Button物件本身
 * */
public void call(View view ){
   Toast.makeText(this, "別點我", Toast.LENGTH_SHORT).show();
  }
}

 

  

相關文章