zoukankan      html  css  js  c++  java
  • PreferenceActivity里自定义标题栏(title bar)出错:requestFeature() must be called before adding content

    一般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了


  • 相关阅读:
    python3中的文件操作
    python3网络爬虫实现有道词典翻译功能
    C++11 thread condition_variable mutex 综合使用
    goland scope pattern 设置
    Go 1.11 Module 介绍
    hustOJ 添加 golang 支持
    docker 搭建 hustoj
    最长重复字符串题解 golang
    golang 结构体中的匿名接口
    使用aliyun cli工具快速创建云主机
  • 原文地址:https://www.cnblogs.com/slider/p/2245149.html
Copyright © 2011-2022 走看看