title: Android: How to run asynctask from different class file?
body: <p>When I use my code in one class file, it runs perfectly:</p>
  
  <pre><code>package com.example.downloadfile;
  
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.InputStream;
  import java.net.HttpURLConnection;
  import java.net.URL;
  
  import android.app.Activity;
  import android.app.Dialog;
  import android.app.ProgressDialog;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.os.Environment;
  import android.util.Log;
  import android.widget.TextView;
  
  public class DownloadFile extends Activity {
  
      public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
      private ProgressDialog mProgressDialog;
      private static String fileName = "yo.html";
      private static String fileURL = "http://example.com/tabletcms/tablets/tablet_content/000002/form/Best%20Form%20Ever/html";
  
       @Override
       public void onCreate(Bundle savedInstanceState) 
       {
          super.onCreate(savedInstanceState);
  
          setContentView(R.layout.main);
          TextView tv = new TextView(this);
          tv.setText("This is download file program with asynctask... ");
          tv.append("\nYo, this line is appended!");
  
          startDownload();
  
       }
  
      private void startDownload() {
          new DownloadFileAsync().execute(fileURL);
      }
  
  
      @Override
      protected Dialog onCreateDialog(int id) {
          switch (id) {
              case DIALOG_DOWNLOAD_PROGRESS:
                  mProgressDialog = new ProgressDialog(this);
                  mProgressDialog.setMessage("Downloading file..");
                  mProgressDialog.setIndeterminate(false);
                  mProgressDialog.setMax(100);
                  mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                  mProgressDialog.setCancelable(true);
                  mProgressDialog.show();
                  return mProgressDialog;
              default:
                  return null;
          }
      }
  
  
      class DownloadFileAsync extends AsyncTask&lt;String, String, String&gt; {
  
          @Override
          protected void onPreExecute() {
              super.onPreExecute();
              showDialog(DIALOG_DOWNLOAD_PROGRESS);
          }
  
          @Override
          protected String doInBackground(String... aurl) {
  
              try {
                  File root = Environment.getExternalStorageDirectory();
                  URL u = new URL(fileURL);
                  HttpURLConnection c = (HttpURLConnection) u.openConnection();
                  c.setRequestMethod("GET");
                  c.setDoOutput(true);
                  c.connect();
  
                  int lenghtOfFile = c.getContentLength();
  
                  FileOutputStream f = new FileOutputStream(new File(root + "/download/", fileName));
  
                  InputStream in = c.getInputStream();
  
                  byte[] buffer = new byte[1024];
                  int len1 = 0;
                  long total = 0;
  
                  while ((len1 = in.read(buffer)) &gt; 0) {
                      total += len1; //total = total + len1
                      publishProgress("" + (int)((total*100)/lenghtOfFile));
                      f.write(buffer, 0, len1);
                  }
                  f.close();
              } catch (Exception e) {
                  Log.d("Downloader", e.getMessage());
              }
  
              return null;
  
          }
  
          protected void onProgressUpdate(String... progress) {
               Log.d("ANDRO_ASYNC",progress[0]);
               mProgressDialog.setProgress(Integer.parseInt(progress[0]));
          }
  
          @Override
          protected void onPostExecute(String unused) {
              dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
          }
      }
  }
  </code></pre>
  
  <p>I want to run the asyntask I have from a different class file, I have my code:</p>
  
  <p><strong>DownloadFile.java</strong></p>
  
  <pre><code>package com.example.downloadfile;
  
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.InputStream;
  import java.net.HttpURLConnection;
  import java.net.URL;
  
  import android.app.Activity;
  import android.app.Dialog;
  import android.app.ProgressDialog;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.os.Environment;
  import android.util.Log;
  import android.widget.TextView;
  
  public class DownloadFile extends Activity {
  
  
      private static String fileName = "yo.html";
      private static String fileURL = "http://example.com/tabletcms/tablets/tablet_content/000002/form/Best%20Form%20Ever/html";
  
       @Override
       public void onCreate(Bundle savedInstanceState) 
       {
          super.onCreate(savedInstanceState);
  
          setContentView(R.layout.main);
          TextView tv = new TextView(this);
          tv.setText("This is download file program with asynctask... ");
          tv.append("\nYo, this line is appended!");
  
          startDownload();
  
       }
  
      private void startDownload() {
          new DownloadFileAsync().execute(fileURL);
      }
  
  }
  </code></pre>
  
  <p><strong>DownloadFileAsync.java</strong></p>
  
  <pre><code>package com.example.downloadfile;
  
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.InputStream;
  import java.net.HttpURLConnection;
  import java.net.URL;
  
  import android.app.Dialog;
  import android.app.ProgressDialog;
  import android.os.AsyncTask;
  import android.os.Environment;
  import android.util.Log;
  
  class DownloadFileAsync extends AsyncTask&lt;String, String, String&gt; {
      public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
      private ProgressDialog mProgressDialog;
  
      @Override
      protected void onPreExecute() {
          super.onPreExecute();
          showDialog(DIALOG_DOWNLOAD_PROGRESS);
      }
  
      @Override
      protected String doInBackground(String... aurl) {
  
          try {
              File root = Environment.getExternalStorageDirectory();
              URL u = new URL(fileURL);
              HttpURLConnection c = (HttpURLConnection) u.openConnection();
              c.setRequestMethod("GET");
              c.setDoOutput(true);
              c.connect();
  
              int lenghtOfFile = c.getContentLength();
  
              FileOutputStream f = new FileOutputStream(new File(root + "/download/", fileName));
  
              InputStream in = c.getInputStream();
  
              byte[] buffer = new byte[1024];
              int len1 = 0;
              long total = 0;
  
              while ((len1 = in.read(buffer)) &gt; 0) {
                  total += len1; //total = total + len1
                  publishProgress("" + (int)((total*100)/lenghtOfFile));
                  f.write(buffer, 0, len1);
              }
              f.close();
          } catch (Exception e) {
              Log.d("Downloader", e.getMessage());
          }
  
          return null;
  
      }
  
      protected void onProgressUpdate(String... progress) {
           Log.d("ANDRO_ASYNC",progress[0]);
           mProgressDialog.setProgress(Integer.parseInt(progress[0]));
      }
  
      @Override
      protected void onPostExecute(String unused) {
          dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
      }
  
      @Override
      protected Dialog onCreateDialog(int id) {
          switch (id) {
              case DIALOG_DOWNLOAD_PROGRESS:
                  mProgressDialog = new ProgressDialog(this);
                  mProgressDialog.setMessage("Downloading file..");
                  mProgressDialog.setIndeterminate(false);
                  mProgressDialog.setMax(100);
                  mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                  mProgressDialog.setCancelable(true);
                  mProgressDialog.show();
                  return mProgressDialog;
              default:
                  return null;
          }
      }
  }
  </code></pre>
  
  <p>I'm using eclipse and I'm getting errors in my DownloadFile.java file, there are many red underlined codes.... I'm new to java and android dev.</p>