2012-03-09 2 views
3

У меня есть фрагмент с некоторыми кнопками в нем, когда нажимается кнопка, он должен показывать ProgressDialog, загружать массив растровых изображений и показывать его в фрагменте в галерее, увольнять ProgressDialog.ProgressDialog не отображается сразу

Но ProgressDialog не отображается сразу, он занимает примерно 1 или 2 секунды, и он просто мигает в тот момент, когда моя галерея показывает.

Im делает это после щелчка:

try{ 
    progress = ProgressDialog.show(activity, "", "Loading images", true); 

    //load images 
    //show gallery 

}catch(){ 
    //... 
}finally{ 
    handler.sendEmptyMessage(0); 
} 

Мой Handler в OnCreate:

handler = new Handler() { 
    public void handleMessage(Message msg) { 
     progress.dismiss(); 
    } 
}; 

Im используя Android 3,1

Logcat показывает ничего :(

03-09 13:17:32.310: D/DEBUG(5695): before show() 
03-09 13:17:32.350: D/DEBUG(5695): after show() 
+0

выслать полный код? Вы использовали Thread или Async для этого? –

+0

@ Самир: Он сказал, что создает 'Handler' в' onCreate' и показывает «ProgressDialog» после клика. Я не вижу проблем с этим кодом. –

+0

yup попробовать и что происходит? –

ответ

1

Вы загружаете изображения в основной поток пользовательского интерфейса - вы должны сделать это в фоновом режиме, так как это может привести к тому, что ваш пользовательский интерфейс перестанет отвечать на запросы (и заставит ваш ProgressDialog отображаться в неподходящее время).

Чтобы использовать картинку AsyncTask, вам необходимо войти в систему.

Отобразите ProgressDialog в AsyncTask.onPreExecute, загрузите изображения в AsyncTask.doInBackground и отпустите диалоговое окно в AsyncTask.onPostExecute.

+0

Спасибо, событие click не было потреблено до загрузки изображений, я переместил код загрузки внутри AsyncTask, и он работал – rafael

1

Документация делает не рассказывайте много о setIndeterminate(boolean), поэтому я не уверен. Но я использую это в своем приложении, и он работает:

ProgressDialog fDialog = new ProgressDialog(your-context); 
fDialog.setMessage(your-message); 
fDialog.setIndeterminate(true); 
// fDialog.setCancelable(cancelable); 
fDialog.show(); 

Не могли бы вы попробовать?

+0

Тот же результат. Я попытался поместить Thread.sleep (5000), после того, как изображения загрузки и ProgressDialog начались только после этого, почти в то же время шоу gallery = ( – rafael

+0

Не могли бы вы отправить logcat после вызова 'show()'? –

Смежные вопросы