位置: 编程技术 - 正文

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

  • 先包装后销售先销售后包装的消费税处理
  • 房地产企业所得税纳税义务发生时间
  • 两个公司如何一起经营
  • 文件柜材质
  • 金税盘不用了之后要抄报税吗
  • 火车票的进项税额
  • 企业所得税从业人数包括临时工吗
  • 转增股本是不是缴个人所得税
  • 委托贷款的资金借出方是谁
  • 收回已作为坏账准备的应收账款会计分录
  • 城镇垃圾处理费计入什么科目
  • 资产减值损失负数是好是坏
  • 经营性固定资产计入什么科目
  • 企业相互之间借款合法吗
  • 电子发票如何打印清单明细
  • 个人所得税怎么查工资明细
  • 发票查验平台查询官网手机版App
  • 超市积分礼品
  • 银行异地汇款抽奖需要扣缴个人所得税吗?
  • 旅游业相关行业
  • 一般纳税人附加税减免
  • 转账支票存根属于银行回单吗
  • 房屋交易税费的计算
  • window10怎么用wifi上网
  • 生产测试是指什么
  • 冲抵备用金
  • 上个月留抵进项税额分录
  • 个税申报晚了会退税费吗
  • windows7怎么说
  • win10纯净版下载联想驱动
  • 母子公司吸收合并优劣势
  • 特殊收入应扣减可加计扣除的研发费用政策依据
  • xwizard.exe是什么
  • 期末坏账准备的计算
  • 无形资产出租属于处置吗
  • ipad最长使用时间
  • 长期投资有哪些渠道
  • thinkphp框架怎么用
  • 详解php中的序列是什么
  • pytorch中的数据类型
  • php判断是否为字母
  • 小程序和h5页面的区别
  • 技术和商业模式怎么写
  • el-upload上传文件必传校验
  • 办公室清洁费计算公式
  • 详解PostgreSQL 语法中关键字的添加
  • 减免税款的会计分录当月做吗
  • 个人所得税计算方法及抵扣方法
  • 发行公司债券发生的折价
  • 差旅费报销范围包括
  • 广告牌制作加盟厂家
  • 增值税为什么要结转
  • 交增值税怎么做帐
  • 委托收款背书和质押背书都属于转让背书
  • 库存商品过期报废的会计分录是什么
  • 车辆保险费会计账务处理
  • 企业垃圾桶
  • 承租人和共同承租人
  • 包工包料成本比例
  • 净资产总计等于什么
  • 盈亏平衡点怎么计算公式
  • 工业企业应付账款怎么算
  • xp系统怎么连接电脑
  • xp系统关机界面设置
  • GrooveMonitor.exe是什么进程?GrooveMonitor.exe可以禁用卸载吗?
  • mac系统怎么查看
  • win7系统桌面快捷键
  • win7打开游戏显示已停止工作
  • edge以ie
  • 使用cp命令时以下说法错误的是
  • win10开机后没声音
  • windows批处理命令大全
  • unity物理效果
  • node js入门
  • linux归档文件什么意思
  • 上海地铁直接刷银联卡
  • 河南省税务总局网站官网
  • 常州金坛最新新闻
  • 美国对中国商品征收关税
  • 南通五险一金最低比例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设