2011-08-01 32 views
1

我正在嘗試使用requestWindowFeature()函數在列表活動上設置自定義標題視圖。該方法工作正常,只有子類Activity,但只要我嘗試與ListActivity子類相同的方法,它的錯誤,給我一個NullPointerException異常,當我嘗試以編程方式修改標題視圖。何時android的ListActivity類調用setContentView()?

我認爲問題屬於requestWindowFeature()需要在setContentView()之前調用的事實。由於ListActivity負責爲您設置內容視圖,因此我不知道何時會調用該視圖。有沒有人有什麼建議?謝謝您的幫助。

回答

1

無論何時與列表進行交互,都會調用setContentView,例如在listactivity上調用getList()或setAdapter()。見listactivity

+0

任何想法爲什麼我的代碼給我一個nullpointerexception?這是相關代碼的要點。 https://gist.github.com/1118871我做了一個快速檢查,requestWindowFeature返回true,所以我的視圖應該被加載,不是嗎? –

+0

((TextView)findViewById(R.id.title))== null? – MrJre

0

ListActivity對你沒有照顧電話 setContentView:你仍然需要自己動手。您的內容視圖必須有一個適當名稱的 ListView,但您仍然需要自己撥打 setContentView。在撥打 super.onCreate之後撥打 requestWindowFeature,然後撥打 onCreate,然後撥打 setContentView,您應該是金手指。

編輯:我的錯誤,你是非常正確的(我不知道:我一直只是調用setContentView自定義佈局)。

here看來,有沒有辦法在ListActivitysetContentView調用之前溜requestWindowFeature召喚:super.onCreate呼叫後立即總是調用setContentView。在致電super.onCreate之前,您可以嘗試致電requestWindowFeature,但我懷疑這樣做效果不佳。

我不認爲你將能夠使用默認的ListActivity這個:你可能需要使用一個常規的活動和手動做ListView綁定。

+0

這是不正確的。 ListActivity爲您提供了一個默認視圖,但如果您願意,您可以用自己的視圖覆蓋它。 –

0

解決我的問題的source,對於任何的Google,是對ListActivity類的源,也是layout_content.xml文件到自己的應用程序的包,和子從這個而不是Android的ListActivity複製類。然後,我添加了一個onCreate()方法,我設置請求窗口功能和,然後調用setContentView()方法。哈克?大概。作品?是:)

0

有時,requestWindowFeature()會在調用super.onCreate(bundle);後調用NullPointerException。另一個原因是如果您也首先打電話setContentView

super.onCreate(bundle);setContentView必須在所有requestWindowFeature()調用完成後調用。