位置: 编程技术 - 正文

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

  • 固定资产清理哪方登记增加
  • 跨年度冲红的账务处理
  • 季度现金流量表是三个月相加吗
  • 待抵扣进项税额怎么算
  • 代人开增值税怎么收费?
  • 增值税普通发票可以抵扣吗
  • 固定资产处理申请
  • 一般纳税人的资质在哪里打印
  • 公司个人所得税怎么申报
  • 个人承担的社保费有哪些
  • 广告业公司成立时的资金如何记账?
  • 预估成本怎么冲回
  • 公司成立之后有人投资怎么做分录?
  • 先计提房租后收到发票 发票附在哪
  • 小规模附加税申报表填写范本
  • 汽车进项税额
  • 电梯销售和安装怎么核算收入
  • win10系统中怎么共享文件
  • 公司开办期间账务处理
  • mac的日历
  • 应收账款转账
  • php处理xml
  • schupd.exe - schupd是什么进程 有什么用
  • dvdram是什么意思
  • php 智能家居
  • PHP:ob_iconv_handler()的用法_iconv函数
  • 新制度下财政拨款是什么
  • 公转私备注用途
  • 进销项抵扣规则
  • 办理组织机构代码证需要什么材料
  • opencv拼接图片
  • 无标题节啥意思
  • php读取文件内容的方法和函数
  • 政府会计公共基础设施分类
  • 外购存货的成本包括哪些内容
  • python 多线程处理
  • 固定资产是价税合计吗
  • 债权投资产生的暂时性差异确认所得税吗
  • 计算企业所得税分录
  • 仓库出入库账本怎么做
  • 读取注册表失败,请检查注册表
  • 资产负债表一般由什么组成
  • 收入费用会计分录
  • 以土地作价投资合伙企业是否缴纳土地增值税
  • 发放股票股利的意义包括
  • 以前年度负债调整
  • 预缴所得税会计分录怎么做东奥
  • 私人网银可以转账吗
  • 商贸公司库存表怎么做
  • 冲销以前年度费用会计分录
  • win7超级账户如何启用
  • u盘装好系统后重启无法进入系统
  • 提高系统能力
  • windows下打开ie提示由于该计算机受到限制,本次操作已被取消
  • mac浏览器显示不全
  • whagent.exe - whagent是什么进程
  • win8系统如何关闭杀毒系统
  • windows任务栏变色
  • win10预览版
  • WIN7系统怎么安装 注音输入法
  • PadExe.exe - PadExe是什么进程 有什么用
  • windows更新某些设置由你的组织来管理是什么意思
  • 安卓opengl es
  • 常见的场景切换效果有哪些
  • excel实现多选
  • jquery插件使用教程
  • python 邻接表
  • jQuery中select与datalist制作下拉菜单时的区别浅析
  • android编译环境搭建
  • redhat linux8
  • javascript高级程序设计电子书
  • python基础开发
  • macbookair安卓系统怎么切换到苹果
  • python中遍历
  • 老板思维案例
  • Python的requests网络编程包使用教程
  • 月度申报如何改为季度申报
  • 江苏国家税务局电子税务局
  • 资源税属于国税还是地税
  • 广州2021社保费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设