Three ways to implements an Android OnClickListener

Suppose we have three buttons:

public class MainActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button0 = (Button)findViewById(R.id.btn0);
        Button button1 = (Button)findViewById(R.id.btn1);
        Button button2 = (Button)findViewById(R.id.btn2);
    }
}

The simplest example of OnClickListener. First, we create an instance of View.OnClickListener, then inside, we add a function named onClick, then we use a switch to decide what shall we do as a button clicked.
Attention : The listener should be implemented outside the function onCreate

public class MainActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button0 = (Button)findViewById(R.id.btn0);
        Button button1 = (Button)findViewById(R.id.btn1);
        Button button2 = (Button)findViewById(R.id.btn2);
    }

//Here's the first implementation of OnClickListener
    private View.OnClickListener mButtonListener = new View.OnClickListener(){
        public void onClick(View v){
        //onClick **must** be implemented in OnClickListener
        //Once the activity was touched, this function will be called.
            switch(v.getId()){
                case R.id.btn0:
                    //When the button0 was touched, do sth here
                    break;
                case R.id.btn1:
                    //When the button1 was touched, do sth here
                    break;
                case R.id.btn2:
                    //When the button2 was touched, do sth here
                    break;
                default:
                break;
        }
    }
}

The code below is the second implementation of OnClickListener.
Attention : This OnClickListener should be implemented in the function onCreate. Because, we expect that it will be created when the activity has started.

public class MainActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button0 = (Button)findViewById(R.id.btn0);
        Button button1 = (Button)findViewById(R.id.btn1);
        Button button2 = (Button)findViewById(R.id.btn2);

        button0.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                // Do sth when button0 was clicked.
            }
        });

        //The same for the others.
    }
}

Otherwise, this is the third OnClickListener.
In this example, we just overwrite the onClick function of activity. Many people prefer to use this kind of implementation

public class MainActivity extends Activity implements View.OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button0 = (Button)findViewById(R.id.btn0);
        Button button1 = (Button)findViewById(R.id.btn1);
        Button button2 = (Button)findViewById(R.id.btn2);
    }

    @Override
    public void onClick(View v){
        switch(v.getId()){
            case R.id.btn0:
                //When the button0 was touched, do sth here
                break;
            case R.id.btn1:
                //When the button1 was touched, do sth here
                break;
            case R.id.btn2:
                //When the button2 was touched, do sth here
                break;
            default:
                break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值