我不明白为什么我必须实现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
}
从类OnClickListener我只使用onClick(View v)方法 - 这个被覆盖。为什么我不能在不实现OnClickListener的情况下定义onClick方法?
答案 0 :(得分:5)
你可以。您可以使用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
}});
但是,实现OnClickListener可以更轻松地处理事件,并提高代码可读性。即你可以使用一个Listener方法,并使用switch语句传递View
来处理多个按钮/监听器,类似于:
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;
}
答案 1 :(得分:1)
只是为了扩展Mob的答案以及Scott的评论和链接......
Activity
主要是UI的框架,因此没有预先定义的与用户交互的方式。作为设计人员/开发人员,我们根据Activity
的目的选择我们希望Activity
包含哪些UI组件。
Buttons
,CheckBoxes
,ListViews
等用户界面组件用于完全不同的目的,它不是Activity
的基本形式的地方要知道这些UI元素对哪些事件做出反应(点击,长按,滑动等),因为没有Activity
始终托管的预定义UI元素集。因此,我们有责任根据我们设计UI的方式实现我们需要使用的事件处理程序(侦听器)。