2012-08-15 49 views
0

我做了一個自定義標題欄,我想要顯示在我的應用程序的所有活動。它完全在我的主要活動:自定義標題條碼打破onCreate()

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.main); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); 

但是我的主要活動調用另一個活動,當我嘗試做同樣的事情出現了失敗:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
setContentView(R.layout.layout_2); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); 

嘗試做findViewById ()崩潰和我包裹在一個try/catch一個看到發生了什麼事:

TextView tv1; 
try {  
    tv1 = (TextView)findViewById(R.id.header); 
} 
catch (Exception e) { 
    Log.d("MyActivity2", "boom"); 
} 

唯一的例外說 原因= ClassCastException異常 detailMessage = android.widget.RelativeLayout

我不知道這意味着什麼,並注:那裏有沒有問題如果我註釋掉requestWindowFeature()getWindow()調用。

在此先感謝您對此的任何見解!

+0

發佈完整的LogCat輸出。 – 2012-08-15 21:03:50

回答

1

如果您正在獲取ClassCastException,那意味着R.id.header不是TextView。在您的佈局header是Relativelayout的名稱。因此,請將其改爲與TextView的匹配。

+0

在Activity2的「佈局」中,「標題」是一個TextView。在標題欄「標題」是一個RelativeLayout。但是因爲我正在訪問Activity2的onCreate()例程中的「header」,所以我認爲名稱範圍將用於Activity2,如果不是,那麼它將在構建時被捕獲。但我會嘗試更改名稱以避免命名空間衝突。 – user316117 2012-08-16 12:59:02

+0

好吧,我將標題欄中的RelativeLayout的名稱更改爲「title_rlayout」,並且它工作正常。我發佈了一個新問題來闡明Android中XML資源Id的範圍規則:http://stackoverflow.com/questions/11988772/what-is-the-scope-of-androidid – user316117 2012-08-16 13:57:58