2016-06-11 5 views
2

私は2つのクラス "BaseActivity"と "ChildActivity"を持っています。つまり、ChildActivityはBaseActivityを継承しています。 質問:私の次のコードスニペットでは、私がLEFTボタンを押すたびに、「私はFrom Child Activityです」というメッセージが記録されます。私が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

あなたはスーパークラスの機能を取得したい場合は、

A)まったくonClick()メソッドをオーバーライドすることができません(私はしないでくださいあなたが望むと思う)
b)super.onClick(v)からに電話してくださいあなたの子クラスの0。

あなたの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)を忘れた: -/Thanks 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 
    }