在Java中,如何使用继承简化代码?

In Java, How do I simplify my code using inheritance? (Android Dev.)

在各种活动中,我有非常相似的方法。

例如:

1
2
3
4
5
6
7
8
9
10
@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.ibHome:
        Intent menuIntent = new Intent(v.getContext(),Menu.class);
        startActivity(menuIntent);
        break;
    }

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
public void onClick(View v) {
     /**  */

    //
    switch(v.getId()){
        case R.id.bNew:
            Intent newSwimmerIntent = new Intent(v.getContext(),NewSwimmer.class);
            startActivity(newSwimmerIntent);
            break;
case R.id.ibHome:
            Intent menuIntent = new Intent(v.getContext(),Menu.class);
            startActivity(menuIntent);
            break;

是否有一种方法(我假设是使用继承)来防止在每个类中显式地声明menuintant?

谢谢。


您可以使用继承,但实际上这可能不是最佳选择,特别是如果这两个活动在"is-a"关系中没有直接关联。

在这种情况下,最好声明一个实现onclickListener接口的新类。然后,您可以实例化该类并将其绑定到按钮的Click事件(无论它们在何处使用)。

下面是一个例子:

1
2
3
4
5
6
7
8
9
10
public class HomeButtonHandler implements OnClickListener{

        @Override
        public void onClick(View v) {
            Intent menuIntent = new Intent(v.getContext(),Menu.class);
            v.getContext().startActivity(menuIntent);            

        }

    }

在您的活动中,您可以将homeButtonHandler绑定到按钮的onclickListner:

1
homeButton.setOnClickListener(new HomeButtonHandler());


为所有活动创建一个通用的BaseActivity,然后只重写BaseActivity.onClick()方法。

通过这种方式,您将有一个针对所有活动的开关。