2016-06-11 124 views
2

我有两个类“BaseActivity”和“ChildActivity”,即ChildActivity inherts BaseActivity。 问题:在我的下面的代码片段中,每当我按下左键 - 它记录我“我是从儿童活动”。如果我想在默认情况下调用SUPER CLASS功能,我需要做什么。Android/Java - 覆盖

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"); 
     } 
    } 
} 

回答

3

如果你想获得超一流的功能,你可以

一)一点也不重写onClick()方法(但我不认为这就是你想要的)
b)致电super.onClick(v)来自onClick()在你的孩子班。

您的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); 
    } 
} 
+0

该死!我怎么忘了super.onClick(v): - /谢谢A.Fatir。 – nalaiqChughtai

+0

@nalaiqChughtai如果有帮助,请标记为答案。 :) –

0
@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 
    }