位置: 编程技术 - 正文

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

  • 环境保护税的纳税期限
  • 缴纳城镇土地使用税
  • 固定资产入账原值含税价吗
  • 百旺金赋的服务费必须交吗
  • 收据怎么粘贴在费用报销单上
  • 事业单位不用纳税吗
  • 小规模纳税人怎么变成一般纳税人
  • 持续经营净利润率怎么算
  • 当月没有发生购销合同还要报印花税吗
  • 个税手续费返还会计分录
  • 机场工作人员的家属票
  • 汇总缴纳增值税的三级公司怎么汇总备案
  • 企业所得税季度申报时间
  • 债务重组是什么意思?
  • 计提和缴纳税会计分录
  • 增值税进项没收到必须开销项怎么办?
  • 个体户交税起征点 2023年
  • 月末主营业务收入结转会计分录
  • 所得税季报营业收入本年累计
  • 工资薪金支出税收额是什么意思
  • 投入资本属于净资产吗
  • 消费税应纳税额计算方法是什么有何特点
  • 装修公司购装修材料入什么科目?
  • 公司总经理报销找谁签字
  • 默认网关不可用频繁掉线
  • php 生成验证码
  • php经典教程
  • erl.exe是什么进程
  • 怎么区分债券折价还是溢价
  • 电商平台第三方服务
  • 骑自行车的好处功效与作用
  • msmpeng.exe是什么进程
  • kjournald是什么进程
  • 存货报废的税务处理及会计处理
  • 损益类科目月末结转到哪个科目
  • 报销差旅费凭证怎么做
  • 人工智能 深度
  • php红包源码
  • 提供加工劳务属于增值税征收范围吗
  • 海洋cms有安卓版下载
  • 企业电子承兑
  • 企业所得税的成本
  • PostgreSQL教程(十三):数据库管理详解
  • 同一控制下合并报表恢复留存收益
  • 钢管扣件租赁公司账务处理
  • 背书的银行承兑汇票怎么做账
  • 什么是品种法?适用于什么范围?
  • 增值税销项税额属于什么科目
  • 房屋租赁费属于变动成本吗
  • 阿里巴巴新任董事长叶
  • 小规模纳税人低值易耗品摊销方法
  • 固定资产折旧的会计科目
  • 企业进项构成比例
  • 现金流量表是指现金还是银行存款
  • 因企业增资而产生的费用
  • 对外投资未实缴怎么办
  • 政府补贴递延收益的摊销时间
  • 车船税开在备注栏相关文件
  • 应收帐款 发票
  • 好用的sql工具
  • win8官方安装教程
  • win8驱动在哪个文件夹
  • linux网络不可达是什么原因
  • win10更新到win11
  • linux 文件夹权限 777
  • win7为什么打不开原神
  • 电脑裸奔可以吗
  • cocos jsc
  • 浅析javascript中function 的 length 属性
  • vue2.x
  • 原生js实现ajax步骤
  • Unity3D游戏开发标准教程
  • Android使用opencv处理图片灰度
  • python爬虫快速入门
  • 安卓 centos
  • js中的类是什么
  • python 异常处理方法
  • 北京通个人认证
  • 国税发票查询能查出什么项目
  • 美国非税收入排名榜
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设