在Fragment工作时显示Dialog

时间:2016-09-18 09:13:46

标签: android android-fragments fragment progressdialog

我有一个片段,在它的onStart()上,我做了很多BD查询,长达15秒。我想显示一个进度对话框,带有“加载圈”。 我的应用程序,只有一个Activity,Main。这个,开始第一个片段,从这里,我跳到其他片段,并为下一个片段相同。为了从一个片段传递到另一个片段,我使用下一个静态方法。

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

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

我该怎么办?

谢谢。

(编辑) 我尝试在onCreateView()和onViewCreated()中启动Fragment内部的Progress Dialog。它不起作用,但是如果我一步一步地调试,我看到当流程进入onStart()(使用DB的10秒钟)时,ProgressDialog停止。

通过这个测试,我理解,ProgressDialog被正确显示,但是当我去onStart()时,它就会消失。

(编辑)

问题是,在Fragment的onStart()上,我正在研究视图,addking元素。我需要的是,在加载这些元素时,会显示一个对话框,因为现在,对于用户来说,应用程序在加载时似乎是sttoped。我需要这样的东西:

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

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

    stopProgressDialog();
}

但它不起作用,因为当Fragment的视图完全加载时,进程Dialog才会开始。

2 个答案:

答案 0 :(得分:0)

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

中的显示位置

答案 1 :(得分:0)

我找到了解决方案。

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