安卓開發筆記(十八):實現button按鈕事件的三種方法


  Android開發中有三種主要的方式用於設置View的點擊事件,1、創建內部類;2、主類中實現OnClickListener接口;3、使用匿名內部類。這三種方式都用到了OnClickListener接口,只是不同形式而已。其中OnClickListener是監聽View點擊事件的接口,接口中定義控件被點擊時的回調方法OnClick()。View需要在setOnclickListener(OnClickLisener listener)方法的參數中傳入OnClickListener接口監聽View的點擊事件。筆者這里僅僅用了三種button的方式,以后有新的方式的話會再添加到里面來,因為Button的實現方式比較多,自己常常不知道為啥就忘記了。

一、內部類實現

內部類實現的方法是:創建一個內部類實現OnClickListener接口並重寫onClick()方法,在方法中寫入點擊事件的邏輯。內部類寫完之后需要為按鈕設置setOnClickListener(Listener listener)屬性,在參數中傳入之前創建好的內部類對象即可。使用這種點擊事件的好處,當按鈕較多時可以在onClick(View v)方法中使用switch語句case屬性設置各自不同的點擊事件邏輯。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button =(Button)findViewById(R.id.button);
    button.setOnClickListener(new MyButton());
}
private class MyButton implements View.OnClickListener{
    @Override
    public void onClick(View view) {
        Toast.makeText(getApplicationContext(),"已點擊按鈕",Toast.LENGTH_SHORT).show();
    }
}
!

二、匿名內部類實現

     當按鈕較少或者只有一個按鈕時,就不需要再單獨創建一個類實現OnClickListener接口了,可以直接創建OnClickListener的匿名內部類傳入按鈕的setOnClickListener()參數中。
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getApplicationContext(), "已點擊按鈕", Toast.LENGTH_SHORT).show();
        }
    });
}

三、Activity本身實現事件接口

除了以上兩種方法,還可以在主類中實現該接口,然后重寫onClick()方法,這里需要注意的是,button.setOnCLickListener(this);方法中接收了一個參數this,這個this代表的是該Activity的引用。由於Activity實現了OnClickListener接口,所以這里this代表了OnClickListener的引用,在方法中傳入this就代表該控件綁定了點擊事件的接口。

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
    }
    @Override
        public void onClick(View view) {
            Toast.makeText(getApplicationContext(),"已點擊按鈕",Toast.LENGTH_SHORT).show();
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM