显示对话框,关于片段工作

Show Dialog, on Fragment working

我有一个片段,在它的 onStart() 中,我进行了很多 BD 查询,这些查询持续了 15 秒。我想显示一个带有 "loading circle" 的进度对话框。 我的应用程序只有一个 Activity,Main。这个,开始第一个片段,从这里,我跳到另一个片段,下一个片段也是如此。为了从一个片段传递到另一个片段,我使用下一个静态方法。

public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen)
{
   FT.replace(R.id.Container, newFragmentToOpen);
   FT.addToBackStack(null);
   FT.commit();
}

我尝试在启动进度对话框的方法中创建一个线程,但没有成功。我尝试在 Fragment 的 OnCreate() 方法上启动对话框,但也没有用。

我能做什么?

谢谢。

(编辑) 我试图在片段内的 onCreateView() 和 onViewCreated() 处启动进度对话框。它没有用,但是如果我逐步调试,我会看到当流程转到 onStart() 时(使用 DB 持续 10 秒),ProgressDialog 停止。

通过这个测试,我明白 ProgressDialog 是正确显示的,但是当我转到 onStart() 时,它就消失了。

(编辑)

问题是,在片段的 onStart() 中,我正在处理视图,添加元素。我需要,当这些元素正在加载时,会显示一个对话框,因为现在,对于用户来说,应用程序似乎在加载时停止了。我需要这样的东西:

public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen)
{
    startProgressDialog();

    FT.replace(R.id.container, newFragmentToOpen);
    FT.addToBackStack(null);
    FT.commit();

    stopProgressDialog();
}

但这不起作用,因为当片段视图完全加载时,进度对话框才开始。

您应该尝试在 onCreateView() 中显示对话框,因为这是 UI 组件在 Fragment

中显示的位置

我找到了解决方案。

  1. 创建 STATIC vars.These 将包含我将在片段的 OnStart() 中使用的信息。
  2. 在进行片段转换之前,启动进度对话框。
  3. 启动进度对话框后,启动线程。
  4. (进入线程)将信息加载到静态变量中。
  5. (进入线程)加载所有信息后,关闭进度对话框。
  6. (INTO THE THREAD) 调用要加载的片段。
  7. 线程结束。
  8. 在 OnStart() 中进入 de Fragment,从 STATIC 变量中获取信息。