2011-09-06 17 views
6

Se richiedo un dialogo come questo nel mio principale attività, allora il progresso viene visualizzato come previsto:SetProgressBarIndeterminateVisibility mancanza di comprensione

  requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
    setProgressBarIndeterminateVisibility(true); 

Ma se ho impostato la visibilità a "false", e quindi reimpostare su " true "all'interno della procedura chiamata in cui voglio distribuirlo, non viene visualizzato nulla. Lo spostamento della richiestaWindowFeature nella procedura provoca un'eccezione. Come dovrei fare questo?

risposta

9

È necessario chiamare requestWindowFeature() una sola volta, in onCreate(), prima di chiamare setContentView(). Quindi è possibile utilizzare setProgressBarIndeterminateVisibility(true|false) per mostrare o nascondere l'indicatore di avanzamento da qualsiasi punto dell'attività (purché sia ​​presente sul thread dell'interfaccia utente, ovviamente).

+0

Non ho dichiarato un altro thread, viene chiamato un proc A dall'attività onCreate proc e il proc B che sta tentando di utilizzare l'indicatore di avanzamento è chiamato "onClick" dal proc A. Questo dovrebbe funzionare? – SirHowy

+0

Finché non si tenta di chiamare 'requestWindowFeature()' due volte, sì. –

+0

Usandolo così ?: 'setProgressBarIndeterminateVisibility (true); try { \t \t spage = CustomHttpClient.myHttpGet (sURL); \t} catch (Eccezione e) { \t \t Toast.makeText (getBaseContext(), "Impossibile recuperare la pagina Web", Toast.LENGTH_SHORT) .show(); \t \t e.printStackTrace(); \t} setProgressBarIndeterminateVisibility (false); ' – SirHowy