我有JPanel,我从它打开了一个扩展AbstractAIFDialog的搜索条件对话框。它由搜索条件文本字段、结果表视图和搜索按钮组成。单击搜索后,在此对话框中,我需要显示进度条,直到我从数据库中获得结果。
单击搜索按钮时,我正在调用下面的函数:
SearchResult res = SearchExecuteHelperUtils.execute(searchService, 0);
上述execute函数定义如下:
public static SearchResult execute(SearchProvider searchService, int nLoadAll)
我在android和java方面是新手。我在正确实现进度对话框时遇到了麻烦。
我有一个这样的代码
ProgressDialog dialog= new ProgressDialog(Main.this);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMax(100);
dialog.show();
MY METHOD WHICH GRABS DATA FROM INTERNET;
dialog.dissmiss();
但是通过实现这个,我的方法运行得很好,但是看不到进
如果您不熟悉Ookii.Dialogs,,我建议您先使用。它是开源的,您可以在那里找到源代码、编译的二进制文件、文档和示例应用程序。
在我的应用程序中,我使用Ookii.Dialogs.Wpf.ProgressDialog to ShowDialog(这)--一个对文件进行一些处理的进度对话框(这始终是应用程序的主窗口)。正如预期的那样,进度对话框在实际可见之前大约需要一秒钟的时间(即使它已经在处理我的文件)。
在进度对话框的DoWork线程中,我还检查输出文件是否已经存在,并询问用户是覆盖每个文件还是跳过输出。我使用Ookii.Dialogs.Wpf.TaskDialog到ShowDialo
我注意到.net也有类似的问题,但我的问题是针对Android的,所以可能解决方案看起来不一样。
单击按钮即可激活该流程。该进程作为UI线程的一部分运行,并在最后进行UI更新。为了让用户更友好,我添加了进度对话框,所以我实例化了一个运行该进程的线程,并在最后更新UI并关闭进度对话框。不幸的是,UI更新失败,出现以下异常:
07-19 21:14:04.602: ERROR/Atjeews(283): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view
我遵循了CommonsWare的书中关于如何使用片段来处理异步任务的方向更改的示例(使用setRetainInstance(true))。然后我尝试向异步任务添加一个进度对话框,但它在方向更改时总是崩溃,并显示"view not attached to window“。
有没有一种模式可以在异步任务中使用进度对话框,该对话框位于片段中,并且在方向改变时不会丢失进度对话框或崩溃?
我是否仍然需要在片段中管理进度对话框的生命周期,即使片段没有被销毁?我假设既然进度对话框是在活动的UI上创建的,那么我可能必须通过覆盖片段的onAttach()和onDetach()方法来销毁/重新创建进度对话