Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/Java-覆盖_Java_Android_Oop_Overriding - Fatal编程技术网

Android/Java-覆盖

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

我有两个类“BaseActivity”和“ChildActivity”,即ChildActivity inherts BaseActivity。 问题:在我下面的代码片段中,每当我按下左键时,它都会记录我“我来自子活动”。如果我想在默认情况下调用超级类功能,我需要做什么。

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
    }