位置: 编程技术 - 正文

关于使用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性能测试)

  • 企业所得税年报怎么查询
  • 社保未统一征收
  • 发票抬头开个人可以吗
  • 500以下的收据可以入账吗
  • 发票替代票
  • 血液制品3%增值税税率
  • 往期企业所得税申报记录怎么查
  • 多缴税款抵税有期限吗
  • 工资发放流程以及如何记账
  • 非税项目明细代码
  • 收入转本年利润的会计分录
  • 上月未计提税金,下月怎么做分录
  • 进口设备在海关处保存2年出售时 计算税怎么算
  • 公司报销专用发票
  • 公司债权转让如何处理
  • 月末收到一批b材料,结算凭证未到,估价50000
  • 计提地税走哪个科目
  • 公司车辆过户给公司
  • 运输企业营改增
  • 个人劳务报酬个人所得税怎么算
  • 报废车辆补贴收据怎么写
  • 债券的实际发行价格为什么
  • 附加税记入什么科目
  • 培训过程中出现的问题及解决办法
  • 补交社保如何证明劳动关系
  • 不抵扣发票如何勾选
  • 工会财务总结报告
  • 收入低于10万免征附加税
  • 精英主板设置u盘启动
  • 年初未分配利润计算公式
  • mac升级系统还剩不到一分钟
  • 隐藏资源管理器窗口
  • 在途物资属于什么科目借贷方向
  • php aop
  • 开发商自用房产出售成为二手房土地成本
  • php session_start
  • axios有哪些常用方法
  • php framework框架
  • java cookie
  • nodejs 2020
  • 农产品核定扣除增值税进项税额计算表
  • 认缴制对实务操作的可能影响有哪些?
  • 企业应收票据贴现,应按实际收到的金额计入
  • 补充医疗相关政策
  • php访问mysql数据库函数
  • 哪些费用进项税额要转出
  • 公司购买食品如何入账科目
  • 纳税人有
  • 企业报税流程是什么样的
  • 劳动法辞退员工补偿标准2023
  • 借应付职工薪酬贷财政拨款收入
  • 进账税发票未认账怎么办
  • 管理费用漏记了跨年调整
  • 福利费入账需要发票吗
  • 土地税计税方法
  • 飞机票退票费如何开票
  • 固定资产是指什么
  • sql语句相似度计算
  • 优盘安装xp
  • win8开始屏幕设置
  • windows 10预览版
  • win10 系统账户
  • win10在哪里更改软件大小
  • linux系统中在给定文件中查找与设定条件
  • linux安装atop
  • sendmail邮件服务器在虚拟机的哪个位置
  • mac nums
  • js小球与边框碰撞反弹
  • opengl深度值与z值
  • python 钉钉打卡定位
  • js实现点击按钮移动滑块到另一个按钮的方法
  • python 多线程
  • 重庆税务稽查局地址
  • 城市垃圾处理费会计分录
  • 临时搭建的活动叫什么
  • 企业所得税优惠事项管理目录2023
  • 贵州省国家税务局电子税务局官网
  • 成都那些地方属于正东方向
  • 矿山耕地占用税计入什么科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设