2016-06-11 172 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 
    }