5

Ho ereditato del codice al lavoro e ho una domanda su alcune implementazioni. L'applicazione su cui sto lavorando ha un'attività che contiene circa 15 diversi frammenti. La logica nella gestione di questi frammenti attività può o meno essere riassunto con la seguente pseudocodice:Esiste un modello di progettazione Android per gestire più frammenti in una singola attività?

if (button_1 selected) { 
    load fragment_1; 
} else if (button_2 selected) { 
    load fragment_2; 
} else if (button_3 selected) { 
    load fragment_3; 
} ...and so on x15ish 

La mia domanda è: esiste una sorta di modello di progettazione Android per gestire situazioni come questa? Il codice funziona; tuttavia, non mi sento troppo a mio agio con una dichiarazione gigante se/else o caso. Ho visto questo question e sembra molto simile al problema che sto avendo. Ho fatto un po 'di ricerche su internet ma non ho trovato esempi o best practice per questo tipo di scenario.

Se qualcuno può indicarmi la giusta direzione o avere qualche suggerimento; sarebbe fantastico Grazie!

+0

Avete controllato questo http://developer.android.com /intl/zh-cn/training/basics/fragments/communicating.html? –

+0

Di solito non hai una catena if-else, solitamente usi le schede per cambiare i frammenti oi metodi onClick per ciascun frammento – Nanoc

+0

@KhizarHayat, sì ho fatto la mia giusta parte di lettura sui frammenti e l'ho usato in un bel pochi progetti. Tuttavia, in questo scenario, non ho mai visto questo numero di frammenti contenuto in una singola attività e implementato nell'istruzione if/else. – dungtatas

risposta

0

Non è necessario selezionare quale pulsante è stato selezionato, ma piuttosto utilizzare onClickListener del pulsante per selezionare il frammento corretto.

buttonForFragment1.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
      // select fragment 1 here 
    } 
}); 

Per quanto riguarda la questione, questo non è un livello di modelli di progettazione, ma piuttosto dettagli di implementazione (modi di dire) e si correttamente riconosciuto il codice come un odore e penso uno possibile soluzione, che non si qualifica come uno schema è il codice sopra.

0

Per ciascun pulsante nel layout è possibile assegnare un metodo nella vostra attività:

<Button 
    ... 
    android:onClick="startFragmentOne" /> 

quindi implementare questi metodi:

public void startFragmentOne(View view) { 
    //TODO 
} 
Problemi correlati