带有AsyncTask的ListFragment未显示ProgressDialog

时间:2017-11-28 17:55:00

标签: android android-asynctask progressdialog android-listfragment

我有一个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是调用启动任务的方法。

0 个答案:

没有答案