使用Activity实现OnClickListener有什么影响?

BNe*_*etz 1 java android

我不明白为什么我必须实现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方法?

Mob*_*Mob 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
        }});
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)