2012-03-02 7 views
1

次のコードでは、AsyncTaskを使用してビデオをダウンロードしています。Android Progress Dialogクラスファイルからメッセージを設定する

//DOWNLOAD VIDEOS 
private class downloadVideosAsync extends AsyncTask <String, String, String>{ 

    protected void onPreExecute(){ 
     super.onPreExecute(); 
     MyActivity.this.mProgressDialog.setMessage("Downloading Videos..."); 
    } 

    @Override 
    protected String doInBackground(String... strings){ 
     try{ 

      VideosC.downloadVideos(VideosM.getVideoNames(), VideosM.getVideoUrls(), 
            VideosM.getVideoThumbs(), VideosM.getFileModified()); 

     }catch (NullPointerException e){ 
      Log.e(LOG_TAG, e.toString()); 
     }catch(Exception e){ 
      Log.e(LOG_TAG, e.toString()); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String lenghtOfFile) { 
     new downloadSlideshowsAsync().execute(); 
    } 
} 

ご覧のとおり、私の進捗状況ダイアログでは、「ビデオのダウンロード...」というメッセージが表示されています。今私がしたいのは、setMessage( "Downloading of 5")のようなものです。しかし問題は私のdownloadVideos関数は別のクラスファイルにあります。VideoController.java

public void downloadVideos(ArrayList<String> VideoNames, ArrayList<String> VideoUrls, 
           ArrayList<String> VideoThumbs, ArrayList<String> fileModified){ 

    try{ 
     int x; 
     int videoNamesLenght = VideoNames.size(); 
     File vidFile; 
     for(x = 0; x < videoNamesLenght; x++) { 

      String[] videoName = VideoNames.get(x).split("/"); 
      String currentFile = videoName[0] + "." + videoName[1]; 
      String currentFileURL = VideoUrls.get(x) + VideoNames.get(x); 
      Log.v(LOG_TAG, "currentFileURL: " + currentFileURL); 

      vidFile = new File(Environment.getExternalStorageDirectory() 
           + "/MyApp/Downloads/Videos/", currentFile); 

        //I want to do maybe here something like 
        //mProgressDialog.setMessage("Downloading x of y") 

      downloadVideoFile(currentFile, currentFileURL, vidFile, fileModified.get(x)); 

     } 
    }catch(Exception e){ 
     Log.e(LOG_TAG, e.toString()); 
    } 
} 

アイデアはありますか?助けてくれてありがとう! :)

答えて

1

Activityで、VideosControllerを呼び出す静的関数を定義できます。 この関数では、Handler Messageを送信して処理できます。

+0

返信ありがとうございます。@rafeal piaoですが、サンプルコードがありますか、実際は初心者です。 :) – MiD

+0

申し訳ありません私の手にサンプルがありません。 –

+0

VideosControllerを呼び出すと、コンテキストオブジェクトを渡すことができます。コンテキストから静的関数を参照することができます。このコードをonPostExecuteメソッドで設定してください。 –

関連する問題