Android 如何正确更新进度对话框?
在我的应用程序中,我显示了一个列表,每个项目都有一个复选框。当用户单击按钮时,我的应用程序应将每个选中的项目(联系人)导入“联系人”应用程序。 我试图向用户显示当前项目的进度(ItemIndex/TotalItems)+文本(通过使用进度对话框)。 同时,我的应用程序正在检查联系人应用程序中已存在的每个项目(联系人),如果是,将使用stratActivityForResult显示一个对话框(此对话框是活动-对话框主题)。 我尝试使用asynctask,它所做的只是显示一个包含第一项的进度对话框,仅此而已。 我还尝试使用handler,它也做同样的事情 有人能帮我吗 编辑:Android 如何正确更新进度对话框?,android,progressdialog,progress,Android,Progressdialog,Progress,在我的应用程序中,我显示了一个列表,每个项目都有一个复选框。当用户单击按钮时,我的应用程序应将每个选中的项目(联系人)导入“联系人”应用程序。 我试图向用户显示当前项目的进度(ItemIndex/TotalItems)+文本(通过使用进度对话框)。 同时,我的应用程序正在检查联系人应用程序中已存在的每个项目(联系人),如果是,将使用stratActivityForResult显示一个对话框(此对话框是活动-对话框主题)。 我尝试使用asynctask,它所做的只是显示一个包含第一项的进度对话框,
int fileindex=0;
arraylistselectedfiles;
startImport();
私有void StartImport(最终ArrayList文件)
{
//检查是否存在allready现有项,如果存在,则调用displayConflict();
}
私有void显示冲突(字符串文件1、字符串文件2)
{
startActivityForResult..//调用看起来像对话框的活动。。。。
}
ActivityResult上的公共void(int请求代码、int结果代码、意图数据)
{
//使用数据。。。。
operate();//添加新/更新/跳过
MoveNext();
}
受保护的void Movenext()
{
fileindex++;//------------->这是我想用progressDialog更新ui的步骤。。。。
StartImport();
}
在这种情况下,您使用的是异步任务这项工作非常简单。因为您必须使用publishProgress(progress)获取运行作业的百分比值,并将其作为int传递,其中progress是正在进行的任务的计算值(状态)
然后,覆盖AsyncTask的onProgressUpdate,它将接受您使用publishProgress(progress)传递的值,并用此方法更新进度栏
有关更多帮助,请参考以下链接:
AsyncTask应该是正常的。在
onProgressUpdate
上更新ProgressDialog
,并根据需要从doInBackground
调用publishProgress
。这就是问题所在……繁重的工作不在任务内部,而是在活动中,因为我需要与用户交互。你还有别的解决办法吗?
int filesIndex=0;
ArrayList selectedFiles<String>;
startImport();
private void StartImport(final ArrayList<String> Files)
{
//checks if there's allready an existing item and if there is, call displayConflict();
}
private void displayConflict(String file1, String file2)
{
startActivityForResult....//call an activity that looks like a dialog....
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
//use data....
operate();//addnew / update / skip
MoveNext();
}
protected void Movenext()
{
filesIndex++; //------------> this is the step where I want to update ui with progressDialog....
StartImport();
}