CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: bluemask con ben 5 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: bluemask con ben 4 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 28 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 5 su 5
Discussione:

modularizzare con Activity

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    107

    Ringraziamenti
    22
    Ringraziato 1 volta in 1 Post
    Predefinito

    modularizzare con Activity

    Salve... non linciatemi!!!! ho creato un thread diverso da "modularizzare codice android", perchè credo che qui si tratti di un argomento diverso. Comunque se non lo riterrete così, non ci son problemi, continuerò l'altro thread.
    Comnque, adesso la questione è: ho (purtroppo) un option menù, che deve essere sempre disponibile. Cioè in qualsiasi momento, l'utente quando clicca sul bottone menù, deve apparire sempre questo option menù.
    Per far ciò, dovrei inserire il seguente codice, in ogni file.java dell'applicazione.
     
    1
     @Override
    2
            public boolean onCreateOptionsMenu(Menu menu) {
    3
                boolean result = super.onCreateOptionsMenu(menu);
    4
                menu.add(0, INSERT_ID, 0, R.string.descr_app);
    5
                return result;
    6
            }
    7
           @Override
    8
            public boolean onOptionsItemSelected(MenuItem item) {
    9
                switch (item.getItemId()) {
    10
                case INSERT_ID:
    11
                    // setContentView(R.layout.custom_dialog);
    12
                   // createDescription();
    13
                    showDialog(DESCRIZIONE_APP);
    14
                    return true;
    15
                }
    16
               
    17
                return super.onOptionsItemSelected(item);
    18
            }
    19
           protected Dialog onCreateDialog(int id) {
    20
                Dialog dialog ;
    21
                switch(id) {
    22
                case DESCRIZIONE_APP:
    23
                    // do the work to define the pause Dialog
    24
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    25
                    builder.setMessage(R.string.descrizione_applicazione_testo)
    26
                           .setCancelable(false)
    27
                         .setNegativeButton("Indietro", new DialogInterface.OnClickListener() {
    28
                               public void onClick(DialogInterface dialog, int id) {
    29
                                    dialog.cancel();
    30
                               }
    31
                           });
    32
               dialog = builder.create();
    33
                    break;
    34
                default:
    35
                    dialog = null;
    36
                }
    37
                return dialog;
    38
            }

    Come visto nell'altro thread, essendo codice che estende Activity, la modularizzazione con codice che estende Activity, non dovrebbe esser possibile, o se lo fosse, sarebbe comunque complicato....
    Quindi son costretto a implementare tale codice in ogni santo file, oppure ho qualche speranza di potero modularizzare?
    Grazie in anticipo a chi saprà rispondermi....

  2.  
  3. #2
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    Ehehehe... c'è un'altra cosa a cui non hai pensato!

    OOP!

    Invece di modularizzare il codice per non ripeterlo, potresti creare una Activity di base dove implementi questo menu, e tutte le altre tue activity dove deve essere ripetuto questo menu (e/o altre funzionalità in comune!) le fai ereditare da questa activity!

  4. #3
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    107

    Ringraziamenti
    22
    Ringraziato 1 volta in 1 Post
    Predefinito

    uffy scusami Orochi.... ma non mi è chiaro....

  5. #4
    Senior Droid


    Registrato dal
    Dec 2009
    Messaggi
    307

    Ringraziamenti
    15
    Ringraziato 40 volte in 39 Posts
    Predefinito

    No problem!
    OOP = Object Oriented Programming
    o programmazione ad oggetti... e nello specifico useremo l'ereditarietà!

    Creiamo una prima classe:
    x
     
    1
    2
    public class ActivityConMenu extends Activity {
    3
    4
    // qua dentro buttiamo tutti metodi comuni che ti servono e quindi anche i 3 che hai elencato prima
    5
    // per brevità ometto tutto il codice...
    6
    7
    public boolean onCreateOptionsMenu(Menu menu) {
    8
       ...
    9
    }
    10
    public boolean onOptionsItemSelected(MenuItem item) {  
    11
       ...
    12
    }
    13
    protected Dialog onCreateDialog(int id) {  
    14
       ...
    15
    }
    16
    17
    }
    18


    A questo punto quando ti serve una activity che abbia quel tipo di menu non ti resta altro che fare:

    9
     
    1
    2
    3
    public class MiaActivity extends ActivityConMenu {
    4
    5
    // qua dentro non hai bisogno di ripetere quei 3 metodi visto che già li possiede ereditando da ActivityConMenu!
    6
    7
    }
    8
    9


    Naturalmente nelle varie activity derivate vai ad implementare il resto dei metodi che le differenziano una con l'altra (quindi la onCreate, ecc) e se per qualche motivo vuoi modificare il menu, o vuoi che non compaia, o chissà cosa, basta che in una di queste activity derivate fai l'override di uno dei tuoi metodi e ci cambi l'implementazione!

    Stavolta spero sia più chiaro

  6. Il seguente Utente ha ringraziato Orochi per il post:

    allmystery (08-01-11)

  7. #5
    Androidiano


    Registrato dal
    Oct 2010
    Messaggi
    107

    Ringraziamenti
    22
    Ringraziato 1 volta in 1 Post
    Predefinito

    si si col codice si capisce sempre di più. Prima avevo capito ma avevo lasciato onCreate() nella classe in cui implemento il menù, e avevo fatto
    extends Activity,menù nella classe che "richiama" il menù ....
    lo scrivo, perchè magari un'altro potrebbe fare come me...

    Grazie Orochi!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy