Android/Java-覆盖
我有两个类“BaseActivity”和“ChildActivity”,即ChildActivity inherts BaseActivity。 问题:在我下面的代码片段中,每当我按下左键时,它都会记录我“我来自子活动”。如果我想在默认情况下调用超级类功能,我需要做什么。Android/Java-覆盖,java,android,oop,overriding,Java,Android,Oop,Overriding,我有两个类“BaseActivity”和“ChildActivity”,即ChildActivity inherts BaseActivity。 问题:在我下面的代码片段中,每当我按下左键时,它都会记录我“我来自子活动”。如果我想在默认情况下调用超级类功能,我需要做什么。 public class BaseActivity extends Activity implements OnClickListener { protected void onCreate(Bundle saved
public class BaseActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
};
protected void configureTitleBar(String title) {
ImageButton imgLeftButton = ((ImageButton) findViewById(R.id.actionBarLeftButton));
imgLeftButton.setOnClickListener(BaseActivity.this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.actionBarLeftButton){
printCustomLog("I am From Base");
}
}
}
儿童活动:
public class ChildActivity extends BaseActivity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_child);
configureTitleBar("MyTitle");
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.actionBarLeftButton){
printCustomLog("I am From Child Activity");
}
}
}
如果您想获得超级类功能,您可以 a)根本不重写
onClick()
方法(但我认为这不是您想要的)b)从子类中的
onClick()
调用super.onClick(v)
您的ChildActivity
中的代码将被删除
@Override
public void onClick(View v) {
// Check some condition if you want to handle it in Child class
if(condition){
printCustomLog("I am From Child Activity");
}
// Else, as default, call Base class's onClick()
else{
super.onClick(v);
}
}
该死我怎么忘记了super.onClick(v):-/谢谢A.Fatir.@nalaiqChughtai如果有帮助,请标记为答案。:)
@Override
public void onClick(View v) {
if (v.getId() == R.id.actionBarLeftButton) {
// here's my work
}
super.onClick(v); // it will call Super's OnClick
}