0

一般的な質問があります:

AsyncTask によって呼び出されるメソッドからのデータで ProgressDialog Message を更新することは可能ですか?

doInBackground(Void... arg0)

目的: メソッドはファイルを生成して返します。データの量に応じて、これにかかる時間が長くなったり短くなったりする場合があります。生成中のファイルの現在のページ番号 (ページ番号は外部メソッド内の値) を伝えて、進行状況をユーザーに通知したいと思います。

値にアクセスして ProgressDialog に表示する方法について何か提案はありますか?

私はすでに試しました:ページの値をパブリックおよび静的に宣言し、からアクセスします

onProgressUpdate(

ページ値の下のコードでは初期値が返されますが、更新された値を取得するためのアイデアは更新されませんか?:

    public class prepareFile extends AsyncTask<String, String, String> {

    @Override
    protected void onProgressUpdate(String... values) {
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);
        progressDialog.setMessage(getResources().getString(
                R.string.CalcGatheringInformation)+"\n"+Filehandler.pages+"  -  "+values);
    }

    @Override
    protected String doInBackground(String... arg0) {
        // TODO Auto-generated method stub

        publishProgress(String.valueOf(Filehandler.pages));
        prepareFiles();

        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        progressDialog.dismiss();
            }
}

ありがとう、

4

2 に答える 2

1

onProgressUpdate後で呼び出されpublishProgress、ファイルの準備を開始する前に一度だけ実行します。そのprepareFilesため、後で変更されず、初期値が表示されます。

私はあなたが一緒に何かをするべきだと信じています

@Override
protected String doInBackground(String... arg0) {
    // TODO Auto-generated method stub

    while(!allPagesPrepared()){
        publishProgress(String.valueOf(Filehandler.pages));
        preparePage();
    }

    return null;
}

prepareFilesまたは、他の方法でジョブを分割しpublishProgress、ロードアルゴリズムの数ステップごとに呼び出します。

于 2013-05-13T12:55:02.377 に答える
1

このリンクを参照できます: 非常に単純な例

http://eliasbland.wordpress.com/2011/03/11/an-example-of-how-to-run-a-background-task-and-report-progress-in-the-status-bar-using- asynctask-on-android/

于 2013-05-13T13:14:56.870 に答える