android-fragments docs - Android:Rimuovi TUTTE le FragmentTransactions dallo stack posteriore




developer guide (3)

Aggiungo un gruppo di FragmentTransactions al back stack in una Tab, e voglio cancellarli ALL dal back stack quando l'utente seleziona una Tab diversa. Non riesco a trovare un metodo per cancellare le cose dallo stack posteriore, solo i metodi per eliminarle, e queste non ti restituiscono nemmeno il Frammento in modo da poterle chiudere. Qualche idea?


Answers

Se aggiungi molti frammenti al backstack e vuoi rimuoverli tutti puoi farlo: popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)


Rimuovili dal backstack usando i metodi popBackStack() .

Ogni frammento che componi è esattamente lo stesso come se l'utente avesse premuto il pulsante BACK , e non fai alcuna pulizia speciale quando viene premuto il pulsante BACK , giusto?


Il metodo Activity.onTouchEvent() viene chiamato alla fine della catena di risposta (ovvero dopo che tutte le altre visualizzazioni hanno avuto la possibilità di consumare l'evento). Se tocchi una vista che è interessata al tocco (ad esempio un Button o EditText ), c'è una buona probabilità che la tua attività non vedrà mai quell'evento.

Se si desidera avere accesso ai tocchi prima che vengano inviati alle proprie visualizzazioni, sostituire invece Activity.dispatchTouchEvent() , che è il metodo chiamato all'inizio della catena di eventi:

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    //Check the event and do magic here, such as...
    if (event.getAction() == MotionEvent.ACTION_DOWN) {

    }

    //Be careful not to override the return unless necessary
    return super.dispatchTouchEvent(event);
}

Fate attenzione a non sovrascrivere il valore di ritorno di questo metodo a meno che non vogliate rubare i tocchi dal resto delle viste, un risultato non necessario return true; in questo punto si romperà l'altra gestione del tocco.





android android-fragments