2016-09-18 88 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()方法,但沒有結果。 –