2012-03-02 48 views
1

我有以下代码使用AsyncTask下载视频。Android进度对话框从类文件设置消息

//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(“下载1的5”)。但问题是我的下载视频功能是在另一个类文件VideosController.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的静态函数。 在该函数中,您可以发送处理程序消息并处理它。

+0

感谢您的回复@rafeal朴,但你有一个示例代码,它实际上是一个初学者。 :) – MiD 2012-03-02 02:57:16

+0

对不起,我手里没有任何样品。 – 2012-03-02 03:08:24

+0

当调用VideosController时,您可以传递上下文对象。从Context可以访问静态函数,请在onPostExecute方法中设置此代码。 – 2012-03-02 03:09:44