2014-01-08 24 views
4

我看到一些人試圖得到一個不確定的進度條來顯示,這是一種與我有相反的問題。顯示窗口進度但不是ActionBar進度(使用v7 compat庫)

我想要的是當應用程序開始工作時,用戶在Window的頂部看到一個不確定的進度條。然後在工作完成時離開。

我正在使用應用程序compat v7庫。我的Activity延伸android.support.v7.app.ActionBarActivity

我在我的Activity.onCreate()的代碼是:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 

    setContentView(R.layout.main); 

    ... 
} 

然後當工作開始(在一個片段,而不是在主線程):

((ActionBarActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(true); 

然後,當工作完成:

((ActionBarActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(false); 

我不能真正解釋兩個好奇的行爲。首先,在setSupportProgressBarIndeterminateVisibility(true)這兩個Window進度顯示(我想要) Action Bar的圓形進度條顯示。

when searching starts

其次,setSupportProgressBarIndeterminateVisibility(false)Window進度獸皮(華友世紀)就是這樣......圓形進度條仍然顯示...

when searching completes

所以我不不知道爲什麼Action Bar的任何進度都會發生,我也不知道如何讓它停止。如果我知道操作欄中的進度視圖的id,我可以在菜單中查看並確保它保持隱藏狀態,但我不知道id(也似乎是錯誤的方法)。

任何幫助解釋這種行爲將是偉大的。謝謝!!

回答

1

對於第一個問題:

這不是很明顯,從給定的代碼,但setSupportProgressBarIndeterminateVisibility呼叫正在從後臺線程調用。如果我將該代碼移動到UI線程,則一切都可以正常工作,而不會出現UI故障。

對於第二個問題:

它似乎是默認的行爲應該是顯示在動作條的圓形進度條。不完全確定爲什麼活動頂部的進度也會顯示。你可以以一種風格隱藏ActionBar的進度,但是在我在較老的Android平臺上測試它之前,我已經離開了它。