Modelli di progettazione utili per lavorare con FragmentManager su Android

10

Quando si lavora con i frammenti, ho utilizzato una classe composta da metodi statici che definiscono le azioni sui frammenti. Per ogni progetto, potrei avere una classe chiamata FragmentActions , che contiene metodi simili ai seguenti:

public static void showDeviceFragment(FragmentManager man){
    String tag = AllDevicesFragment.getFragmentTag();

    AllDevicesFragment fragment = (AllDevicesFragment)man.findFragmentByTag(tag);

    if(fragment == null){
        fragment = new AllDevicesFragment();
    }

    FragmentTransaction t = man.beginTransaction();
    t.add(R.id.main_frame, fragment, tag);

    t.commit();
}

Di solito avrò un metodo per schermata dell'applicazione. Faccio qualcosa di simile quando lavoro con piccoli database locali (di solito SQLite) quindi l'ho applicato ai frammenti, che sembrano avere un flusso di lavoro simile; Non sono sposato con lui però.

In che modo hai organizzato le tue applicazioni per interfacciarti con l'API Fragments e quali (se esistono) schemi di progettazione pensi applichi?

    
posta Anthony Naddeo 11.12.2012 - 05:27
fonte

1 risposta

3

Lo schema accettato è quello di avere un metodo factory all'interno della tua classe di frammenti personalizzati (tipicamente chiamata newInstance () ma scelta del rivenditore hey). Quindi la tua classe di frammenti dovrebbe essere simile a questa:

public class MyFragment extends Fragment
{
    public static MyFragment newInstance()
    {
        MyFragment newFragment = new MyFragment();
        // add any bundle arguments here if needed
        return newFragment;
    }
    // rest of fragment class...
}

Quindi, quando crei un frammento e lo aggiungi al backstack, invece di dire:

Frammento MyFragment = new MyFragment ();

Puoi utilizzare il metodo factory invece della parola chiave 'new'.

    
risposta data 22.04.2014 - 22:02
fonte

Leggi altre domande sui tag