在各种活动中,我的方法非常相似。
例如:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ibHome:
Intent menuIntent = new Intent(v.getContext(),Menu.class);
startActivity(menuIntent);
break;
}
}
和
@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;
有没有办法(我假设会使用继承)来防止在每个类中明确声明 menuIntent ?
感谢。
答案 0 :(得分:2)
您可以使用继承,但实际上这可能不是最佳选择,特别是如果这两个活动在“Is-A”关系中没有直接关联。
在这种情况下,您可能最好声明一个实现OnClickListener接口的新类。然后,您可以实例化该类,并将其绑定到按钮的单击事件,无论它们在何处使用。
以下是一个例子:
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:
homeButton.setOnClickListener(new HomeButtonHandler());
答案 1 :(得分:1)
为您的所有活动创建一个公共BaseActivity
,然后仅覆盖BaseActivity.onClick()
方法。
通过这种方式,您可以使用一个开关来完成所有活动。