zoukankan      html  css  js  c++  java
  • requestFeature 方法需要放在界面渲染方法之前

    注:本文本转载于:http://usenrong.iteye.com/blog/1488503
    requestFeature 方法的位置需要放在界面渲染方法之前,比如放在setContentView方法之前。
    final boolean isCustom = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.you_layout);
    if(isCustom){
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_tiltebar);
    }

    就是说,界面的属性(这里指的是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了
  • 相关阅读:
    fibnacci数列的python实现
    求最大公约数伪代码
    2020-2021-1 20201213信息安全专业导论第五周学习总结
    2020级201213《信息安全专业导论》第五周学习总结
    xor加密的python实现
    第四周学习总结
    BASE64编码
    师生关系
    2020-2021--1 20201205《信息安全专业导论》第2周学习总结
    师生关系
  • 原文地址:https://www.cnblogs.com/runwind/p/4454710.html
Copyright © 2011-2022 走看看