我不明白为什么我必须实现OnClickListener来使用OnClick方法.假设这段代码:
public class KlickitestActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onClick(View v) {
// code what happens when a click is made
}
Run Code Online (Sandbox Code Playgroud)
从类OnClickListener我只使用onClick(View v)方法 - 这个被覆盖.为什么我不能在不实现OnClickListener的情况下定义onClick方法?
您可以.你可以使用Anonymous Inner Class来做到这一点:
Button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//Do stuff
}});
Button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//Do stuff
}});
Run Code Online (Sandbox Code Playgroud)
但是,实现OnClickListener可以更轻松地处理事件,并提高代码可读性.即你可以使用一个Listener方法,并View
使用switch语句传递一个处理多个按钮/监听器,类似于:
public void onClick(View view){
switch(view.getId()){
case R.id.Button1:
//Stuff for button 1
break;
case R.id.Button2:
//Stuff for button 2
break;
break;
case R.id.Button3:
//Stuff for button 3
break;
}
Run Code Online (Sandbox Code Playgroud)