2016-06-11 7 views
2

Ich habe zwei Klassen "BaseActivity" und "ChildActivity", also ChildActivity inerts BaseActivity. Frage: In meinem folgenden Code-Snippet, wenn ich LINKS TASTE drücke - es protokolliert mich "Ich bin von Child Activity". Was müsste ich tun, wenn ich SUPER CLASS standardmäßig aufrufen möchte?Android/Java - Überschreiben

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

Kinder Aktivität:

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

Antwort

3

Wenn Sie Superklasse Funktionalität erhalten möchten, können Sie

a) Mitnichten Überschreiben Sie die onClick() Methode (aber ich weiß nicht Denken Sie, das ist, was Sie wollen)
b) Anruf super.onClick(v) von onClick() in Ihrer Kindklasse.

Der Code in Ihrem ChildActivity wird dann sein.

@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

Damn! Wie ich super.onClick vergessen habe (v): -/Danke A.Fatir. – nalaiqChughtai

+0

@nalaiqChughtai Pls als die Antwort markieren, wenn es geholfen hat. :) –

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 
    }