我有一个ListFragment
,其中有一个AsyncTask
来将数据写入远程商店。我需要在发送数据时显示ProgressDialog
显示状态,因为这可能需要相当长的时间,具体取决于远程存储的文件数量。我已经Activity
成功完成了此操作,但我在ListFragment
AsyncTask
doInBackground
内遇到了问题。
这很复杂,因为我需要在任务的ProgressDialog
方法中显示更新,因为这是主要工作的完成。也就是说,即使在非UI绑定onPreExecute()
方法中,ProgressDialogs
也根本没有显示出来。查看getActivity()
的其他帖子我正在使用Activity
传递给ProgressDialog。此机制也与我正在使用的其他几个public class MyFragment extends ListFragment {
private ProgressDialog mProgress;
private void hideProgress() {
if (mProgress != null) {
mProgress.dismiss();
mProgress = null;
}
}
private void showProgress(String message) {
if (mProgress != null) {
mProgress.dismiss();
mProgress = null;
}
mProgress = ProgressDialog.show(getActivity(), null, message, true, false);
}
protected void updateProgressMessage(String message) {
if (mProgress != null && mProgress.isShowing()) {
mProgress.setMessage(message);
}
}
public syncForms() {
new syncPendingFormsResultTask().execute();
}
private class syncTask extends AsyncTask<Object, String, Boolean> {
@Override
protected void onCancelled() {
hideProgress();
}
@Override
protected void onPreExecute() {
showProgress("Submitting Form...");
}
@Override
protected Boolean doInBackground(Object... params) {
onProgressUpdate("Uploading Form");
}
@Override
protected void onProgressUpdate(String... values) {
String message = values[0];
updateProgressMessage(message);
}
@Override
protected void onPostExecute(Boolean result) {
showProgress("Upload Complete...");
hideProgress();
}
}
}
}
类一起工作,而不是在这里。我可能只是错过了一些明显的东西,所以感谢任何帮助。
这是一个代码示例 - 请原谅我,如果它没有编译或有错误 - 我不得不删除大量的代码,将其归结为手头的问题:
syncForms()
jest __tests__ --watch
是调用启动任务的方法。