Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何正确更新进度对话框?_Android_Progressdialog_Progress - Fatal编程技术网

Android 如何正确更新进度对话框?

Android 如何正确更新进度对话框?,android,progressdialog,progress,Android,Progressdialog,Progress,在我的应用程序中,我显示了一个列表,每个项目都有一个复选框。当用户单击按钮时,我的应用程序应将每个选中的项目(联系人)导入“联系人”应用程序。 我试图向用户显示当前项目的进度(ItemIndex/TotalItems)+文本(通过使用进度对话框)。 同时,我的应用程序正在检查联系人应用程序中已存在的每个项目(联系人),如果是,将使用stratActivityForResult显示一个对话框(此对话框是活动-对话框主题)。 我尝试使用asynctask,它所做的只是显示一个包含第一项的进度对话框,

在我的应用程序中,我显示了一个列表,每个项目都有一个复选框。当用户单击按钮时,我的应用程序应将每个选中的项目(联系人)导入“联系人”应用程序。 我试图向用户显示当前项目的进度(ItemIndex/TotalItems)+文本(通过使用进度对话框)。 同时,我的应用程序正在检查联系人应用程序中已存在的每个项目(联系人),如果是,将使用stratActivityForResult显示一个对话框(此对话框是活动-对话框主题)。 我尝试使用asynctask,它所做的只是显示一个包含第一项的进度对话框,仅此而已。 我还尝试使用handler,它也做同样的事情

有人能帮我吗

编辑:

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是正在进行的任务的计算值(状态)

然后,覆盖AsyncTaskonProgressUpdate,它将接受您使用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();
}