打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PreferenceActivity里自定义标题栏(title bar)出错:reques...

一般activity里自定义标题栏时候,我们一般会遵循一个顺序:

1   final boolean isCustom = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
2 setContentView(R.layout.you_layout);
3 if(isCustom){
4 getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_tiltebar);
5 }

就是说,界面的属性(这里指的是window的属性)一般要在展示界面内容(setContentView)之前确定,这个也符合逻辑。然后,今天在我使用preferenceActivity时候,出错了:requestFeature() must be called before adding content。相关代码如下:

super.onCreate(savedInstanceState);
final
boolean isCustom = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
addPreferencesFromResource(R.xml.preferences);
if(isCustom){
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_tiltebar);
}

网上查了下,没有结果,于是我觉得是不是super.onCreate(savedInstanceState)里面有文章,进入源码一看,果然:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(com.android.internal.R.layout.preference_list_content);

mPreferenceManager = onCreatePreferenceManager();
getListView().setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
}

可以看出,在super.onCreate(savedInstanceState) 里面就出现了活动界面内容的展示,即调用setcontentview方法。于是把requestFeature()方法放在super.onCreate(savedInstanceState)前面,就ok了


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
android:标题栏进度圈使用方法
PreferenceActivity和PreferenceFragment
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
Android系列教程之八:ListView组件的使用
Android 自定义标题栏(title栏)
android如何阻止app
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服