2011-08-26 8 views
7

Più attività hanno onCreateOptionsMenu identico, onOptionsItemSelected e onKeyDown. Quando applico un cambiamento, devo farlo in ogni attività (tempo di lavoro * conteggio delle attività). C'è un modo per riutilizzare il codice (ad esempio, scrivere tutti e tre i metodi in un unico posto e inserire un riferimento ad esso in ogni attività)?Attività multiple, onCreateOptionsMenu identiche, onOptionsItemSelected e onKeyDown. Posso in qualche modo riutilizzare il codice?

risposta

10

Certo, basta creare la propria classe Activity da cui ereditano tutte le classi.

Un po 'come questo - creare una classe base astratta che eredita da Activity e implementa comportamento comune:

public abstract class MyBaseActivity extends Activity { 
    public Menu onCreateOptionsMenu(Menu menu) { 
     /* do common menu stuff */ 
    } 
} 

poi prendere la vostra attività individuali ereditano dalla classe base:

public class MyActivity extends MyBaseActivity { 
    // inherits behaviour from MyBaseActivity 
    // so don't need to re-implement onCreateOptionsMenu 
} 
+1

Ovviamente, grazie! Entrambe le risposte sono corrette e scritte sull'ora esatta, quindi approverò la tua risposta come quella giusta (meno la reputazione di @alextsc) e la risposta alextsc al voto alto. –

6

Certo, crea un'attività di base e scrivi il tuo codice lì.

public class MenuActivity extends Activity { 
    // Menu stuff goes here 
} 

Quindi estendere le attività separate da quello.

public class MyActivity1 extends MenuActivity { ... } 
public class MyActivity2 extends MenuActivity { ... } 
public class MyActivity3 extends MenuActivity { ... } 
+1

Non posso accettare due risposte come corrette, quindi sto solo andando a votare la tua. –

+1

Nessun problema, abbiamo pubblicato allo stesso tempo. Penso che Dave abbia dato il meglio qui (maggiori dettagli), quindi accetta la sua risposta. :) –

Problemi correlati