tl; dr: Il modo corretto per chiudere un DialogFragment
è quello di utilizzare dismiss()
direttamente sul DialogFragment.
dettagli: I documentation of DialogFragment stati
controllo della finestra di dialogo (decidere quando per mostrare, nascondere, respingerlo) dovrebbe essere fatto tramite l'API qui, non con chiamate dirette nella finestra .
Quindi, non si dovrebbe usare getDialog().dismiss()
, dal momento che sarebbe richiamare dismiss()
nella finestra di dialogo. Invece, si dovrebbe utilizzare il metodo dismiss()
del DialogFragment stesso:
public void respingere()
Respingere il frammento e la sua finestra. Se il frammento è stato aggiunto allo stack posteriore, tutto lo stato dello stack posteriore fino a includere questa voce verrà spuntato. In caso contrario, verrà impegnata una nuova transazione per rimuovere il frammento.
Come si può vedere, questo si occupa non solo della chiusura del dialogo ma anche della gestione delle transazioni frammentate coinvolte nel processo.
È necessario utilizzare solo onStop
se si creano esplicitamente risorse che richiedono la pulizia manuale (chiusura di file, chiusura di cursori, ecc.). Anche in questo caso, ignorare onStop
di DialogFragment anziché onStop
della finestra di dialogo sottostante.
Sfortunatamente questo sta causando il completamento del mio Activity contenente ... –
@ScootrNova: Non dovrebbe, probabilmente hai un bug altrove. Come stai creando il frammento? – Heinzi
'protected protected showDialogFragment (frammento finale DialogFragment) {final FragmentTransaction fTransaction = getSupportFragmentManager(). BeginTransaction(); fTransaction.addToBackStack (null); fragment.show (fTransaction, "dialog");} Ci scusiamo per il cattivo rivestimento! Ma si potrebbe aver ragione, quindi per il momento ho scritto un altro modo per chiudere il mio DialogFragments. Il modo in cui li stavo licenziando usando il metodo dismiss() stava solo trovando il frammento per tag e poi eseguendo il comando dismiss() su di esso se non era nullo. Oh e sì, sto 'new'ing il frammento prima di passarlo a quel metodo. –