0

我制作了一个自定义标题栏,我希望它出现在我的应用程序中的所有活动中。它在我的主要活动中完美运行:

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");  
}

异常说 cause=ClassCastException detailMessage=android.widget.RelativeLayout

我不知道这意味着什么,注意如果我注释掉requestWindowFeature()getWindow()调用没有问题。

提前感谢您对此的任何见解!

4

1 回答 1

1

如果您收到 ClassCastException ,则意味着 R.id.header 不是 TextView 。在您的布局header中是Relativelayout 的名称。因此,将其更改为与 TextView 匹配。

于 2012-08-15T21:53:20.760 回答