2012-10-31 48 views
1

我不斷收到此錯誤,告訴我爲我的進度條取消showdialog代碼。下載帶進度條showDialog的文件 - 錯誤

現在我能做些什麼來解決這個問題,我也不想用任何其他方式。我嘗試去學習下載

的ShowDialog

這裏我的代碼

public class download extends Activity { 

public static final int DIALOG_DOWNLOAD_PROGRESS = 0; 
private Button startBtn; 
private ProgressDialog mProgressDialog; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    startBtn = (Button)findViewById(R.id.startBtn); 
    startBtn.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 
      startDownload(); 
     } 
    }); 
} 

private void startDownload() { 
    String url = "http://practicalbuddhist.com/wp-content/uploads/2012/03/Synapses-Image-for-March-17-2010-Blog-Entry.jpg"; 
    new DownloadFileAsync().execute(url); 
} 
@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DIALOG_DOWNLOAD_PROGRESS: 
     mProgressDialog = new ProgressDialog(this); 
     mProgressDialog.setMessage("Running Download Test..."); 
     mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     mProgressDialog.setCancelable(false); 
     mProgressDialog.show(); 
     return mProgressDialog; 
    default: 
     return null; 
    } 
} 

class DownloadFileAsync extends AsyncTask<String, String, String> { 

@SuppressWarnings("deprecation") 
@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    showDialog(DIALOG_DOWNLOAD_PROGRESS); 

} 

@Override 
protected String doInBackground(String... aurl) { 
    int count; 

try { 

URL url = new URL(aurl[0]); 
URLConnection conexion = url.openConnection(); 
conexion.connect(); 

int lenghtOfFile = conexion.getContentLength(); 
Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile); 

InputStream input = new BufferedInputStream(url.openStream()); 
OutputStream output = new FileOutputStream("/sdcard/Downloadtest.jpg"); 

byte data[] = new byte[1024]; 

long total = 0; 

    while ((count = input.read(data)) != -1) { 
     total += count; 
     publishProgress(""+(int)((total*100)/lenghtOfFile)); 
     output.write(data, 0, count); 
    } 

    output.flush(); 
    output.close(); 
    input.close(); 
} catch (Exception e) {} 
return null; 

} 
protected void onProgressUpdate(String... progress) { 
    Log.d("ANDRO_ASYNC",progress[0]); 
    mProgressDialog.setProgress(Integer.parseInt(progress[0])); 
} 

@SuppressWarnings("deprecation") 
@Override 
protected void onPostExecute(String unused) { 
    dismissDialog(DIALOG_DOWNLOAD_PROGRESS); 
} 

}}

+0

什麼是錯誤一個簡單的例子? – Phil

+0

當我在我的手機上試用此功能時,它不會執行任何操作,並且檢查該文件是否在我的SD卡上。 – MoschDev

+0

有沒有logcat輸出? – Phil

回答

0

使用對話框類方法直接不活動的輔助方法。

http://developer.android.com/guide/topics/ui/dialogs.html的對話框API指南中,他們明確表示不使用ProgressDialog,但使用具有ProgressBar的自定義佈局。

另一方面,您可以使用DownloadManager異步下載文件。即使有通知,也請查看https://github.com/commonsguy/cw-android/blob/master/Internet/Download/src/com/commonsware/android/download/DownloadDemo.java的簡單示例。

如果你仍想這個方法檢查用於http://www.androidhive.info/2012/04/android-downloading-file-by-showing-progress-bar/使用ProgressDialog-