0

ProgressDialogでAsyncTaskを使用することについて質問があります。dismissメソッドを呼び出した後、例外があります。私はこれに関連する多くの質問を見つけました、そして答えは「PostExecute()にそれを入れてください」です。しかし、それは機能しません...

public class Testing2 extends Activity {

private static final int PROGRESS = 0x1;

private ProgressBar mProgress;
private int mProgressStatus = 0;
private ProgressDialog dialog;
private Handler mHandler = new Handler();

protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    setContentView(R.layout.done);

    mProgress = (ProgressBar) findViewById(R.id.progressbar);

    new Testing().execute(1,2,3);


}
private class Testing extends  AsyncTask<Integer, Integer, Integer> {

       protected void onPreExecute()
       {
           ProgressDialog dialog = new ProgressDialog(this);
               dialog.setMessage("dasdasd");
               dialog.setIndeterminate(true);
               dialog.setCancelable(false);
               dialog.show();

       }
     protected Integer doInBackground(Integer... urls) {

           Integer totalSize = 1;

           return totalSize;
       }

       protected void onProgressUpdate(Integer... progress) {

       }

       protected void onPostExecute(Integer result) {
           dialog.dismiss();
       }
   }
}
4

1 に答える 1

0

ProgressDialogをフィールドではなくローカル変数に割り当てているdialog
ので、代わりに

ProgressDialog dialog = new ProgressDialog(this);

使用する

dialog = new ProgressDialog(Testing2.this);

doinbackgroundで多くのことをしていない場合は、プログレスバーが表示されるとは思えません。機能をテストする場合は、少なくともdoinbackgroundで2秒間スリープ呼び出しを行います。

于 2012-09-25T16:53:55.157 に答える