2
我的實際任務就是讓完成。然而,我沒有得到我的進度條的進展狀況,即使我所說的進度對話框的增加..?誰能說得清我做錯了什麼?下面的AsyncTask publishProgress沒有更新我的ProgressDialog
class A extends AsyncTask<File[],Integer,Void>
{
private Context cnt;
int count=0;
@Override
protected void onPreExecute() {
pd = new ProgressDialog(cnt);
pd.setMessage("Matching progress");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMax(100);
pd.setCancelable(false);
pd.setProgress(0);
pd.show();
}
A(Context context)
{
cnt=context;
}
protected Void doInBackground(File[]... params) {
// TODO Auto-generated method stub
File[] newfiles=params[0];
File[] temp=null;
int progress=0;
int dircnt=0;
int numberofdir=newfiles.length;
for(File b:newfiles)
{
count=0;
dirname=b.getName();
if(b.isDirectory())
{
temp=b.listFiles();
}
for(File a:temp)
{
gest=dotask.batchprocess(a.getPath());
if(gest!=null)
System.out.println("success");
String name=dirname+"_"+count;
saveGesture(name, gest);
count++;
}
dircnt++;
progress=(int)((dircnt/numberofdir)*100);
publishProgress(progress);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
// increment progress bar by progress value
pd.setProgress(values[0]);
}
protected void onPostExecute() {
pd.hide();
pd=null;
}
}
是從我稱之爲AsyncClass的方法。
public void addgestures()
{
cView.postInvalidate();
dotask.setH(cView.getH());
dotask.setW(cView.getW());
count=0;
files=null;
/*if(dir.isDirectory())
{
files=dir.listFiles();
}*/
files=dir.listFiles();
for(int i=0;i<files.length;i++)
{
System.out.println(files[i].getPath());
}
A a=new A(this);
a.execute(files);
}