位置: 编程技术 - 正文

关于使用RequestWindowFeature为啥一定要在setContentView之前调用

编辑:rootadmin

推荐整理分享关于使用RequestWindowFeature为啥一定要在setContentView之前调用,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

网上关于RequestWindowFeature()的用法有很多,却难找一篇解释清楚的文章供大家了解,下面这是我遇到这个问题并且得出的一点结论供大家参考。

Activity的RequestWindowFeature()实际上走的是PhoneWIndow的requestFeature(),在PhoneWIndow的requestFeature()中有个前提条件,成员属性mContentParent不能为非null,这是构建窗体的view,即在为窗体设置属性时,还不能构建窗体。如下:

@Override public boolean requestFeature(int featureId) { if (mContentParent != null) { throw new AndroidRuntimeException("requestFeature() must be called before adding content"); }

.....

return super.requestFeature(featureId); }

但是在activity中使用setContentView()时,实际上走的是phonewindow的setContentView,根据代码我们看到

关于使用RequestWindowFeature为啥一定要在setContentView之前调用

@Override

public void setContentView(View view, ViewGroup.LayoutParams params) { if (mContentParent == null) { installDecor(); } else { mContentParent.removeAllViews(); } mContentParent.addView(view, params); final Callback cb = getCallback(); if (cb != null && !isDestroyed()) { cb.onContentChanged(); }

}

它会首先判断mContentParent 是否为null,如果为null,进入installDecor();

private void installDecor() {

......

if (mContentParent == null) { mContentParent = generateLayout(mDecor); mTitleView = (TextView)findViewById(com.android.internal.R.id.title); if (mTitleView != null) { if ((getLocalFeatures() & (1 << FEATURE_NO_TITLE)) != 0) { View titleContainer = findViewById(com.android.internal.R.id.title_container); if (titleContainer != null) { titleContainer.setVisibility(View.GONE); } else { mTitleView.setVisibility(View.GONE); } if (mContentParent instanceof FrameLayout) { ((FrameLayout)mContentParent).setForeground(null); } } else { mTitleView.setText(mTitle); } }

.....

}

这是installDecor方法的部分代码,从中我们可以看到,它会对mContentParent 进行初始化,从而赋予相应的&#;,这就是RequestWindowFeature为啥一定要在setContentView之前调用就会抛此类异常

Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content- ::.: E/AndroidRuntime(): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:)- ::.: E/AndroidRuntime(): at android.app.Activity.requestWindowFeature(Activity.java:)- ::.: E/AndroidRuntime(): at com.solar.BaseActivity.onCreate(BaseActivity.java:)- ::.: E/AndroidRuntime(): at com.solar.SetupInfoActivity.onCreate(SetupInfoActivity.java:)- ::.: E/AndroidRuntime(): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:)- ::.: E/AndroidRuntime(): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:)d

Android 性能测试实践(二) 实时监控工具 转载地址:

Android开发之时间刻度盘 一、最近的一个项目中有遇到时间刻度盘的需求,在网上没找到合适的,于是自己就花点时间实现了,现在分享出来,效果如下图:在介绍如何实现之

Android面试题 1.Android序列化,其中的差异。Android自定义对象可序列化有两个选择一个是Serializable和Parcelable;差异:1、在使用内存的时候,Parcelable比Serializable性能高

标签: 关于使用RequestWindowFeature为啥一定要在setContentView之前调用

本文链接地址:https://www.jiuchutong.com/biancheng/382298.html 转载请保留说明!

上一篇:自定义ListView使用Volley获取数据(android自定义listview)

下一篇:Android 性能测试实践(二) 实时监控工具(安卓app性能测试)

  • 中税税务咨询
  • 契税计税依据及税率
  • 股东权益是资产吗
  • 餐饮业增值税是多少
  • 劳务公司拿什么来做成本
  • 应付债券转为实际债务
  • 个体工商户化妆品经营范围
  • 煤炭企业会计制度
  • 企业收回以前注销时的坏账准备余额怎么处理?
  • 学校捐赠收入需上交吗
  • 报表的应付款太大怎么调?
  • 营改增医院增值税
  • 收到车辆保险返还会计分录
  • 建筑工程增值税税率是9还是11
  • 金税盘里的增值税怎么算
  • 国家要收回房屋土地怎么补偿
  • 应付职工薪酬所得税汇算清缴
  • 基建项目税率
  • 税务局代开的专票信息填错了怎么办
  • 筹建人员是什么工作
  • 测试费怎么入账
  • win11系统的电脑中拷贝到U盘中的文件没有了怎么解决
  • 电脑开机自动进入bios怎么解决
  • 什么情况转账会延迟2天
  • 增值税专用发票和普通发票的区别
  • 外贸 代理
  • 未分配利润亏损怎么做分录
  • win11可以触屏吗
  • 资本溢价和股本差多少
  • php设计模型
  • fg726p.exe
  • 如何做好零售商
  • framework3.5怎么打开
  • 前端 input
  • 宝塔面板使用教程
  • 黄石国家公园的英文翻译
  • head -1命令
  • 个体工商户该如何开发票
  • 注册一个公司没有流水可以吗
  • 供应商质量考核评估表样板
  • 织梦如何使用不侵权
  • 出口退税转内销还是转免税好
  • 社保代扣代缴的规定
  • 公允价值变动借方表示什么
  • 员工探亲路费报销入哪个科目
  • 税控服务费属于增值税减免费?
  • 税款差0.05是怎么处理
  • 收到政府的资本公积可以投入子公司吗
  • 暂估销售收入账目
  • 检测费用的会计分录
  • 奖金如何做账分录
  • 企业内在
  • MySQL数据库开发技术电子版
  • mysql日志有哪些
  • win10注册表主键
  • mac不用密码
  • 苹果系统怎么修改语言
  • Ubuntu 8.10 Server Ruby 的安装方法
  • linux系统没有yum
  • win10启动很慢怎么办
  • win10app商店
  • win7系统纯净版和旗舰版有什么区别
  • win7旗舰版虚拟光驱下载
  • 统计动态分析
  • nodejs支付宝支付
  • 使用netcat(瑞士军刀)进行文件传输
  • Android In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
  • java多线程用法
  • shell脚本命令行参数
  • div+css布局是什么
  • jquery.Callbacks的实现详解
  • nodejs require
  • javascript document.execCommand() 常用解析
  • 用原生js实现过什么功能
  • h5实现微信分享
  • 国家税务总局江西省国家税务局
  • 企业所属行业代码查询方法
  • 个人租车收入如何缴纳个人所得税
  • 2018年企业所得税
  • 电子发票怎么作废
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设