位置: 编程技术 - 正文

关于使用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专业版家庭版企业版
  • 税盘没反应
  • 怎么获取win10密钥
  • 什么是土地使用者依照法律规定
  • php常用的技术栈
  • 如何关闭win11系统
  • 在建工程如何转为成本费用
  • 政府补助退回的账务处理
  • dat文件转换成wps表格
  • 微信小程序开挂方法
  • 申报系统异常
  • 所得税季报本月数是指
  • 2022年数学建模获奖结果
  • wrap激活
  • smarty模板引擎
  • 工业企业采购商品过程中发生的进货费用
  • 旅行社专票开票内容的规定
  • 季度是指
  • 金蝶软件凭证修改怎么做
  • 十年磨一剑的下一句幽默
  • 高效刷题app
  • 什么叫网银盾账户
  • 企业所得税的营业收入包括营业外收入吗
  • 发票税率开错了3%开成5%怎么办?
  • 兼职工资帐务处理
  • 背书的行为
  • 高企数据造假
  • 承兑到期没兑现怎么办
  • 跨年租赁费会计分录
  • 长期待摊费用的摊销期限应该是
  • 个人咨询费发票怎么开
  • 餐饮费发票可以抵扣进项税吗
  • 贷款公司收取服务费跑路
  • 营业收入包括哪几项收入
  • 发票 发票专用章
  • 本期应补退税额是什么意思
  • 融资租赁首付租金会计账务处理
  • mysql查询两个表的数据
  • windows任务管理
  • win8.1开机进入桌面
  • rtm平台全称
  • 苹果mac浏览器
  • RAVMOND.exe - RAVMOND是什么进程.有什么作用
  • windows10不能在任务栏进行的操作
  • 如何使用ai软件
  • 批处理命令是什么语言
  • pythonista可以制作app吗
  • js按下键盘事件
  • js 对象key
  • 简略说明本岗位最高风险的防范措施和现场处置方案
  • 扩展坞哪个牌子比较好
  • nodejs如何实现数据库
  • python同一层次的语言必须对齐吗
  • unity网络请求
  • python 编程技巧
  • 纳税人初次购买税控设备
  • 浙江省网上税务服务大厅
  • 地税税务稽查管理办法
  • 深圳国家税务总局
  • 地源热泵有收费标准吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设