2016-09-18 64 views
0

我有一个片段,并在其onStart(),我做了很多BD查询,这是长达15秒。我想显示一个“加载循环”的进度对话框。 我的应用程序,只有一个活动,主。这就开始了第一个片段,由此我跳到其他片段,下一个片段也是如此。为了从一个片段传递到另一个片段,我使用下一个静态方法。显示对话,在片段工作

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

我试过在该方法中创建一个线程什么启动进程对话框,但它没有工作。我试图在片段的OnCreate()方法上启动对话框,但这也没有起作用。

我该怎么办?

谢谢。

(编辑) 我试图在onCreateView()和onViewCreated()片段内启动进程对话框。它没有工作,但如果我一步一步地调试,我发现当流程进入onStart()(使用DB的时间为10秒)时,ProgressDialog停止。

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

(编辑)

的问题是,在片段在onStart(),我工作的意见,addking元素。我需要,当这些元素加载时,会显示一个对话框,因为现在,对于用户来说,它似乎应用程序在加载时被冻结。我需要这样的:

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

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

    stopProgressDialog(); 
} 

但doesn't的工作,因为进度对话框刚刚开始时的片段的观点是满载。

+0

请加上你以前试过的代码,有助于理解问题。 – W4R10CK

+0

代码太多。正如我在帖子中所说的,我的应用程序是基于Fragments的。我有很多片段,被称为下一个。我使用静态方法(在第一篇文章中显示)。在片段上的OnStart()上,我制作了大量的DB句子,然后在加载10秒钟的时候需要这些句子。 –

回答

0

我找到了解决办法。

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

你应该尝试显示,因为这onCreateView()对话是在UI组件显示在一个Fragment

+0

它没有工作。我有这样的: 私人静态ProgressDialog espera; @可空 @覆盖 公共视图onCreateView(LayoutInflater充气,ViewGroup中的容器中,捆绑savedInstanceState){ LayoutInflater inflador; inflador = inflater; espera = new ProgressDialog(inflador.getContext()); espera.setMessage(“Loading”); espera.setIndeterminate(true); espera.show(); return inflador.inflate(R.layout.layout_fragment_clasificaciones_wec,container,false); } 我也试着在onStart()上调用“show”。 –

+0

你尝试新的ProgressDialog(getActivity())而不是新的ProgressDialog(inflador.getContext()) –

+0

它不工作。我正在尝试onViewCreated()方法,但没有结果。 –