2011-11-09 14 views
5

Sto diventando famoso java.lang.IllegalArgumentException: View not attached to window manager. L'attuale known solution è di ignorare l'errore utilizzando il blocco try-catch vuoto. Ma c'è una soluzione più programmabile? Per esempio.C'è un modo per determinare se è possibile chiamare un dialog.dismiss() senza blocco try-catch vuoto?

if (dialog.isAttached()) 
    dialog.dismiss(); 

Certo, meglio sarebbe se l'SDK di Android avrebbe una funzione non mancando (perché il motivo per cui l'API deve fallire se non è possibile evitarlo ??):

dialog.tryDismiss(); 

O è il blocco try-catch vuoto architettonicamente giustificabile? O è solo una soluzione alternativa per un'API errata o incompleta?

risposta

0

è possibile utilizzare:

if (dialog != null && dialog.isShowing())dialog.dismiss(); 

meglio respingere dialogo prima dell'attività scompare/chiude ... che significa in onPause() e OnDestroy() evento troppo ..

+0

Ciò renderebbe il codice molto più complicato. –

2

Io uso sempre :

if(dialog != null && dialog.isShowing()) 
    dialog.dismiss(); 
+0

Non funziona se si fa clic sul pulsante 'Home' durante il tempo in cui viene visualizzata la finestra di dialogo (è una finestra di avanzamento) e l'azione termina (la finestra di dialogo verrà chiusa) quando l'attività non è più visibile. –

+0

Scusa, ma ho appena provato quello che hai detto nella mia applicazione (Carica un'immagine e mentre la finestra di dialogo è mostrata, premi il tasto Home e attendi che l'azione finisca (mostra un messaggio di brindisi) .Nonostante nessuna eccezione. – SERPRO

+0

Hmm, strano: la stessa cosa mi dà un'eccezione su Android 2.3.6. –

Problemi correlati