2011-04-04 2 views
4

Я разрабатываю приложение, на котором у меня есть два вида деятельности.
первая активность, вызываемая секундой для получения URL-адреса загрузки.Продвинутый диалог не отображается на onActivityResult function

В OnActivityResult функция первого Activity.there является ProgressDialog , которая показывает, что статус загрузки изображения с использованием этого URL.

Проблема заключается в том, что диалог прогресса не отображается в этой активности.

protected void onActivityResult(int requestCode, int resultCode, Intent imagePicked) 
    {  
     super.onActivityResult(requestCode, resultCode, imagePicked); 
      if(resultCode==RESULT_OK) 
      { 

       ProgressDialog progressDialog=ProgressDialog.show(this, "", "Loading Image"); 
       switch(requestCode) 
       { 
        case CharacterSelector.GetFaceBookImage: 
         //Toast.makeText(this, "onFacebookimageresult", Toast.LENGTH_SHORT).show(); 
         String ImageUrl=imagePicked.getStringExtra("DownloadLink"); 
         WebService getImage=new WebService(ImageUrl); 

         Log.d("Selected Img url", ""+ImageUrl); 
         InputStream inputStream; 
         try 
         { 
          inputStream = getImage.getHttpStream(ImageUrl); 
          getImage=null; 
          Bitmap bitmap=BitmapFactory.decodeStream(inputStream); 
          inputStream=null; 
          mybitmapDrawable=new BitmapDrawable(bitmap); 
          addImageUserImage(mybitmapDrawable.mutate()); 
          progressDialog.dismiss(); 
          bitmap=null; 
         } 
         catch (IOException e) 
         { 
          //Show server Error message: 
          e.printStackTrace(); 
         } 

         break; 

С уважением, Kariyachan

ответ

4

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

Используйте AsyncTask для выполнения длительных задач в фоновом режиме и в то же время обновите пользовательский интерфейс.

+0

Да! .whole экран в течение некоторого времени, тогда он показывает загруженное изображение. Я пойду на это с помощью AsyncTask. Спасибо за ваше время - :). – DroidBot

+0

Спасибо, человек !. это прекрасно работает. – DroidBot

0

начать новую тему

verlauf = ProgressDialog.show(ctx, "Infrarotauslesung", "initialisiere Bluetooth",true,false); 
    new Thread(){ 
     @Override 
     public void run(){ 
         Looper.prepare(); 
     }.start(); 
0

Я думаю, что ProgressDialog было показывается в течение очень короткого промежутка времени. Вы должны показать его перед началом работы Activity с кодом запроса CharacterSelector.GetFaceBookImage.

2

Если ваш класс WebService загружается асинхронно, то увольнение вызывается сразу после шоу, поэтому диалоговое окно прогресса появляется и исчезает одновременно.

Если ваш класс Webservice загружается синхронно, это может привести к тому, что ANR и ваша активность могут быть убиты системой. Вы должны использовать его в другом потоке, используя AsyncTask, например.

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