Designproblem

eicon11

Aktives Mitglied
Hey ich schreibe gerade an einem Android Programm.

Aus der Androidbibliothek nutze ich 3 Klassen, Activity, ListActivity und TabActivity.
ListActivity und TabActivity erben beide von Activity.

Die Klasse Aktivity hat zwei Methoden die ich gerne überschreiben möchte:
public boolean onCreateOptionsMenu(final Menu menu)
public boolean onOptionsItemSelected(final MenuItem item)

und zwar in jede meiner von den 3 Klassen erbende Klasse den gleichen Code benutzen, um Redundanz zu vermeiden suche ich jetzt nach einer Möglichkeit irgendwie den gleichen Code in allen Klassen zu verwenden ohne copy&paste zu verwenden oder noch eine Klasse unter die 3Klassen zu schieben (das mache ich gerade).

Habt da jemand eine Idee ?

Grüße :)
 
Zuletzt bearbeitet:

eicon11

Aktives Mitglied
Ich kann kann ja nichts vor Activity hängen, und ich muss wenn ich z.B. ListActivity nutzen will auch von ihr erben.
Gerade sieht meine Lösung so aus:

Activity <- AbstractActivity
Activity <- ListActivity <- AbstractListActivity
Activity <- TabActivity <- AbstractTabActivity

und in allen Abstract*Activity Klassen steht immer die gleiche Methode drin.
 

Marco13

Top Contributor
Ah OK (bin mit der Android API nicht so firm :oops: ). Viel mehr Möglichkeiten, als das in eine Klasse auzulagern, wüßte ich da jetzt nicht, z.B. in ein Interface/Klasse "OptionMenuHandler"
Java:
class MySpecialListActivity extends ListActivity
{
    private OptionMenuHandler optionMenuHandler = new DefaultOptionMenuHandler();

    public boolean onCreateOptionsMenu(final Menu menu) { 
        return optionMenuHandler.onCreateOptionsMenu(menu);
    }
    public boolean onOptionsItemSelected(final MenuItem item)  { 
        return optionMenuHandler.onOptionsItemSelected(item);
    }
}
so dass die Aurufe nur noch weitergereicht werden müssen.

Aber vielleicht hat noch jemand eine elegantere Idee....
 

Ähnliche Java Themen

Neue Themen


Oben