2011-11-24 13 views
8

Sono assolutamente nuovo nello sviluppo di Android (Java) e ne sono così entusiasta! La guida per gli sviluppatori di Google è fantastica e ho imparato molto in poco tempo. Mi tiene anche sveglio durante la notte;)Estensione della classe per attività

Oggi sono passato attraverso la creazione di menu e c'è qualcosa che non riesco a capire. Si tratta di estendere le classi. La guida dice:

Suggerimento: se l'applicazione contiene molteplici attività e alcuni di loro fornire il menu stesse opzioni, considerare la creazione di un'attività che implementa nulla se non l'onCreateOptionsMenu() e metodi onOptionsItemSelected(). Quindi estendi questa classe per ciascuna attività che dovrebbe condividere lo stesso menu Opzioni. In questo modo, hai per gestire solo un set di codice per la gestione delle azioni di menu e ogni classe discendente eredita i comportamenti del menu.

Il punto che non capisco è come estendere una classe ... Let dire che ho un MainActivity e subattività. Voglio avere lo stesso menu in entrambe le attività, quindi creo un MainMenuActivity. Come estendere questa classe per entrambe le attività?

Sì, la ricerca è stata effettuata in rete ma non è stata trovata alcuna utilizzabile. Voglio davvero capirlo, quindi spero che qualcuno possa darmi una mano con qualche spiegazione di samplecode +. Grazie in anticipo!!

+0

Verificate anche [questa] (http: // stackoverflo w.com/questions/7618227/can-i-combine-my-code-into-some-kind-of-global-activity/7618263#7618263) proprio simile a quello di cui stai parlando. –

risposta

18

Quello che intendono è la seguente:

Normalmente si dovrebbe avere:

public class MyActivity extends Activity{...} 

Se avete 4-5-6 ... di quelle attività, e ognuno di loro utilizza lo stesso menu codice, è sufficiente copiare e incollare il codice 4-5-6 .. volte. Oppure si potrebbe fare questo:

public class BaseActivity extends Activity{ 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     //My menu code 
    } 
} 

E utilizzare questa classe per le vostre 4-5-6 ... Attività:

public class MyActivity extends BaseActivity{...} 

In questo modo non è necessario copiare il codice creazione di menu in tutte le tue attività e inoltre, non devi modificare le classi 4-5-6 ... per modificare un piccolo frammento di creazione del menu. Il codice del menu è ora anche in MyActivity.


Si potrebbe anche avere uno sguardo here, si spiega che cosa extends mezzi.

+0

Grazie mille !! Ora capisco, è più facile di quanto pensassi !! – MartijnG

9

È davvero semplice.

MainMenuActivity

public class MainMenuActivity extends Activity { 
    //Override or add whatever functionality you want other classes to inherit. 
} 

MainActivity

public class MainActivity extends MainMenuActivity { 
    //Add what is specific to MainActivity. The menu will be inherited from MainMenuActivity. 
} 

subattività

public class SubActivity extends MainMenuActivity { 
    //Add what is specific to SubActivity. The menu will be inherited from MainMenuActivity. 
}