Metodi di frammento: attach (), detach (), remove (), replace (), popBackStack ()

Sono molto confuso tra queste funzioni ei loro scopi. Quello che ho osservato che l'utilizzo di replace() sostituisce il frammento esistente con una nuova. Possiamo usare addToBackStack(null) per mettere quel frammento nella pila posteriore in modo da poter tornare al frammento precedentemente mostrato. Ora quando un frammento viene aggiunto (o sostituito) – onAttach() -> onCreate() ecc … i methods del frammento vengono chiamati in ordine.

Ora quando chiamiamo remove() sul frammento della nostra attività, quali funzioni del frammento vengono chiamate e in quale ordine?

  • c'è un modo per distriggersre l'accelerazione hardware solo per Android 4.0.3?
  • I campioni nativi OpenCV non stanno costruendo
  • Implementazione di bandi Admob quando setContentView () viene utilizzato per Surfaceview
  • Android Studio esport le stringhe dalla libreria di supporto a APK
  • ButterKnife onclick non funziona
  • Imansible recuperare il file PDF come dati binari
  • Che cosa fa attach() e detach() ? detach() rimuove il frammento? E quando vengono utilizzati questi due attach() e detach() , quali funzioni del frammento vengono chiamate e in quale ordine?

    Inoltre, cosa succede a popBackStack() ? Voglio dire quali funzioni sono chiamate quando usiamo popBackStack() sul frammento della nostra attività?

    E quando su onDestroy () ha chiamato ??

    Grazie.

  • Come posso rilevare le forms geometriche di base 2D (es. Quadrato, triangolo, cerchio) in un'image JPEG?
  • Cercando di eseguire test banali di JUnit banale. Ottenere: "Test di esecuzione fallito: Nessun risultato del test" Che cosa mi manca?
  • L'altitudine GPS di Android è errata a causa della non inclusione dell'altezza del geoid?
  • Come gestire le sessioni con l'applicazione Android
  • Impostare il button Home di ActionBar sul lato destro
  • Come condividere text e image su Facebook utilizzando Intent
  • 3 Solutions collect form web for “Metodi di frammento: attach (), detach (), remove (), replace (), popBackStack ()”

    Ora quando chiamiamo rimuovi () sul frammento della nostra attività, quali funzioni del frammento vengono chiamate e in quale ordine?

    Guarda http://developer.android.com/reference/android/app/Fragment.html .

    L'ordine è: onPause() , onStop() , onDestroyView() , onDestroy() , onDetach()

    Che cosa fa albind () e staccare ()? Stacca () rimuove il frammento? E quando vengono utilizzati questi due attaccamenti () e detach (), quali funzioni del frammento vengono chiamate e in quale ordine?

    attach() e detach() è rispettivamente associati o stacca il Fragment con / da Activty . Quando si collega il Fragment , viene chiamato il metodo del ciclo di vita onAttach() , quando si stacca, il metodo del ciclo di vita onDetach() viene chiamato nel Fragment . Per ulteriori informazioni consultare il link sopra riportto.

    Inoltre, cosa succede a popBackStack ()? Voglio dire quali funzioni sono chiamate quando usiamo popBackStack () sul frammento della nostra attività?

    Se il Fragment non è stato distrutto, allora su popBackStack() vengono chiamati i methods onStart() e onResume() . Se il Fragment è stato distrutto in precedenza, i methods del ciclo di vita saranno chiamati a partire da onAttach() . È uguale a quando si preme il button Indietro su Activities .

    Solo una nota su popBackStack() . Non si apre un frammento, esso pone una transazione di frammento. Quindi qualunque sia l'ultima transazione di frammento sia invertita. Se stai visualizzando un FragmentA e la tua transazione è stata:

     fragmentTransaction.replace(R.id.your_layout, fragmentB); fragmentTransaction.addToBackStack(null); 

    Sostituirebbe FragmentA con FragmentB e aggiungere quella transazione (non il frammento) alla pila posteriore. Se poi si preme il button indietro, si apre la pila posteriore e ottiene la transazione, che è stata "sostituire questo FragmentA con un FragmentB ". Invertire quindi quella transazione. All'indietro, l'istruzione deve sostituire qualunque sia il frammento corrente con FragmentA . Se l'originale FragmentA esiste ancora, lo utilizza. Se è stato distrutto, fa una nuova.

    Supponiamo che il frammento A e il frammento B siano stati aggiunti ad un contenitore con le seguenti fasi:

     1. Added fragment A => .replace(R.id.container, fragmentA) => addToBackStack(null) 2. Added fragment B => .replace(R.id.container, fragmentB) => addToBackStack(null) 3. Removed fragment B => fragmentManager.popBackStack(); 

    Chiamate quando si chiama fm.popBackStack ():

     FragmentB: onPause() FragmentB: onStop() FragmentB: onDestroy() FragmentB: onDetach() FragmentA: onCreateView() FragmentA: onViewCreated() FragmentA: onActivityCreated() FragmentA: onStart() FragmentA: onResume() 

    Spiegazione: perché durante la rimozione e la distruzione del frammento B utilizzando popBackStack (), è stata creata una nuova image di frammento e ripresa?

    Ans: Quando hai aggiunto il frammento B, hai usato sostituire () e addToBackStack (), quindi tutti i frammenti sono stati rimossi dal contenitore e il frammento B è stato aggiunto al contenitore. E anche questa transazione è stata registrata nella Back stack. Quindi, quando si chiama fm.popBackStack (), prima la transazione viene spuntata dalla pila posteriore e quindi le operazioni si ristabiliscono, quindi il frammento b viene rimosso dal contenitore e distrutto. E tutti gli altri frammenti vengono aggiunti, per il nostro caso viene aggiunto il contenitore del frammento A al contenitore. Notato anche che il file di onAttach & onCreate () di un frammento A non è chiamato perché è stato già creato e allegato alla MainActivity precedentemente.

    Indietro premere sul frammento B fa la stessa cosa:

     If you press the back button, it calls fm.popBackStack() and pops the transaction. 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.