0

私は Android が初めてで、進行状況ダイアログの作成を練習しています。ダイアログのメッセージを数秒ごとに変更したいのですが、メッセージを変更するとアプリケーションがクラッシュします。私が間違っているかもしれないアイデアはありますか?

private void progressDialogTest(final ArrayList<String> messages)
    {
        AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() 
        {
            private ProgressDialog progressDialog;

            @Override
            protected void onPreExecute() 
            {
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setTitle("Progress Dialog");
                progressDialog.show();
            }

            @Override
            protected Void doInBackground(Void... arg0) 
            {
                try 
                {
                    for(int i=0; i<messages.size(); i++)
                    {
/******** APPLICATION SEEMS TO CRASH AT LINE BELOW ********/
                        progressDialog.setMessage(messages.get(i));
                        Thread.sleep(3000);
                    }
                } 
                catch (InterruptedException e) 
                {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(Void result) 
            {
                progressDialog.dismiss();
            }
        };
        task.execute((Void[])null);
    }

ここに画像の説明を入力

4

1 に答える 1

5

代わりにコードを onProgressUpdate に移動します。

@Override
protected void onProgressUpdate(Integer... progress) {
    super.onProgressUpdate(progress);
    progressDialog.setMessage(messages.get(progress[0]));
}

@Override
protected void doInBackground(Void... arg0) {
    /* ... */

    //progressDialog.setMessage(messages.get(i)); Change this line to
    publishProgress(i);

    /* ... */
}
于 2013-06-18T02:39:54.337 に答える