您的位置:首页 > 移动开发 > Android开发

Three ways to implements an Android OnClickListener

2016-03-05 03:17 489 查看
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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: