1
public class MyPreferences extends PreferenceActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     requestWindowFeature(Window.FEATURE_PROGRESS); 
     ... 
     setProgressBarIndeterminateVisibility(true); 
     setProgressBarVisibility(true); 
    } 
} 

在第一requestWindowFeature()調用,這將引發:如何在自定義PreferenceActivity中顯示不確定的進度圖標?

ERROR/AndroidRuntime(16406): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 

顯然我還沒有加入在這一點上的任何內容。 PreferenceActivity在super.onCreate()期間是否改變了一些狀態,導致任何孩子認爲它有?或者我應該使用一些清單屬性?

我還應該指出,我在不使用xml的情況下創建了這些首選項,即完全以編程方式,但代碼片段足以顯示在任何情況下都會出現問題。

+0

請把你的logcat分塊。 – JoxTraex 2011-05-05 17:31:09

+1

因爲'複合'活動(PreferenceActivity,ListActivity)等管理標準視圖組件本身,那麼你對super.onCreate()的懷疑可能是正確的(它是設置內容視圖)。嘗試在行後面移動該行以請求窗口功能。 – Squonk 2011-05-05 17:35:13

+0

MisterSquonk你已經明白了!雖然我差不多在那裏,但我實際上還是忍住玩超級調用的位置,因爲在構造函數中它是強制性的。我們在這裏沒有這種情況,但它仍然是第一條(或最後一條)更多的路線。那麼,你生活和學習 - 謝謝。我怎樣才能給你答案? – 2011-07-19 06:20:32

回答

4

問題是你在requestWindowFeature()之前有super.onCreate()。由於這是一個PreferenceActivity,因此在onCreate()中創建了一些標準項目。

只需在requestWindowFeature()下面移動onCreate()即可。

相關問題