1

doInBackGroundメソッドとAsyncTaskメソッドを使用して、以下のように進行状況を表示します。

class UploadFile extends AsyncTask<String, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        showDialog(DIALOG_DOWNLOAD_PROGRESS);
    }

    @Override
    protected String doInBackground(String... aurl) {
        upload(ActionUrl, uploadFile, savepath, newName);
        return null;
    }

    protected void onProgressUpdate(String... progress) {
        mProgressDialog.setProgress(Integer.parseInt(progress[0]));
    }

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

upload(ActionUrl, uploadFile, savepath, newName);方法はこんな感じです。そして以下のコード:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case DIALOG_DOWNLOAD_PROGRESS: //we set this to 0
            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;
    }
}

そして、以下に電話してください:

private ProgressDialog mProgressDialog;
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
new UploadFile().execute("test");

ただし、進行状況ダイアログには常に0%が表示され、更新されることはありません。それを更新するために変更する方法は?

4

2 に答える 2

1

メソッドを呼び出す必要publishProgress(...)がありますdoInBackground(...)onProgressUpdate(...)それが呼ばれる原因です。onProgressUpdate(...)魔法のように呼ばれることはありません。

これは多目的に使用できるように設計されてpublishProgress(...)おり、公開したい「進行中の」データを使用してトリガーするのはユーザーの責任です。1010パーセントなどの数値、または。などの文字列にすることができますFirst file downloaded...

クラスは、AsyncTaskあなたが何をいつ公開したいかを知りません-それはpublishProgress(...)からの呼び出しが何doInBackground(...)をすることを意味するのかです。

于 2012-01-19T02:50:33.820 に答える
1

進行状況を追跡し、このアクティビティに報告する2番目のスレッドを作成する必要があります。これを実現する方法の例を示すリンクは次のとおりです。http: //developer.android.com/guide/topics/ui/ dialogs.html

このリンクで、「2番目のスレッドを使用したProgressDialogの例」を探します。

于 2012-01-19T02:15:19.023 に答える