andriod 4.0以上版本不调用onConfigrationChange方法的解决办法

我们首先看看Android4.0以前版本是如何调用onConfigrationChange方法的:

1. 首先在manifest.xml文件里面添加权限:<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>

2. 然后在manifest.xml文件中activity配置属性:android:configChanges="orientation|keyboardHidden"

3. 最后在Activity类中继承方法:

@Override

public void onConfigurationChanged(Configuration newConfig) {

super.onConfigurationChanged(newConfig);

// 可以再次屏切换横竖屏布局文件,或其他任何自己想做的操作

     if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
            textView.setText("当前屏幕为横屏");
     }else{
            textView.setText("当前屏幕为竖屏");
     }

}

后来在4.2的版本上,各种尝试都不调用onConfigurationChanged方法,很是奇怪。我明白记得以前做项目的时候调用此方法是毫无疑问的,那原因到底是什么呢?此问题困惑了很久,废话不再多说了,直接说解决办法把,其实很简单,修改manifest.xml文件配置的属性,在后面加上一个screenSize即可,如下:

android:configChanges="orientation|keyboardHidden|screenSize"

然后一运行,果然是Android版本的问题。哈哈!此问题终于解决了。

最后须注明的是:

对android:configChanges属性,一般认为有以下几点:

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

但是大家需注意的是,在4.0以后的版本需要加上ScreenSize。噢啦!

时间: 2024-10-05 04:40:38

andriod 4.0以上版本不调用onConfigrationChange方法的解决办法的相关文章

Extjs4.0以上版本智能提示的方法

最近,公司的BS项目要用Extjs,本屌学过JavaScript..和Jquery Easy UI  ,Jquery..可这个Extjs完全没接触过..可公司项目进度不能掉..只有苦心学习,终于写了点东西出来,可本屌英语太差..天天查着API写着代码,真的是无比的忧桑,但是,公司是VS2012网上的各种提示方式,提示都不全,甚至会导致很多地方错误,固通过各种方式寻找完美的提示,最终发现,Spket IDE 的独立编译器提示无比的全,而且相当好用...其实Spket..网上一直都说是MyEci..

java.sql.SQLException: Unknown type &#39;246 in column 0 of 1 in binary-encoded result set的解决办法

最近在大学毕设项目基础上新增一些功能,基于Struts2开源框架,数据库采用的是MySQL.写完后台的新功能代码,单元测试也顺利通过,去整合前台,但是当使用JSP页面操作的时候,没想到报异常了.截图如下: java.sql.SQLException: Unknown type '246 in column 2 of 4 in binary-encoded result set. 纳闷了,为什么能够通过JUnit呢? 几经查找,都说是MySQL的bug,更换了MySQL新版本的驱动包,比如mysq

iMac 更新XCode 5.0.1 到 5.1.1 失败,解决办法

原因: 因为, 我的 小IPHONE4,在7.0.4版本 超级卡, 昨晚升级到7.1.1 . 今天发现,iMac上的XCODE, 不能识别我的手机,提示说XCODE的版本低,让升级. 之后,XCODE升级过程中,出现问题! 解决办法,如下: 在Finder中,我的电脑(小房子图标) -  资源库 - Developer - XCode   .   一般安装XCode都会安装到这个目录下,      选中XCODE, CMD+DEL 删掉, (或不放心的话, 可以剪切到某个别的路径下),   再尝

未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的解决办法

错误消息: 未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的解决办法 解决办法: 1, 若要解决该问题,请在 Visual Studio 2010 命令提示符下运行下面的命令行: aspnet_regiis.exe -i -enable 如果出现以下错误的时候我们就用方法2.. PM> aspnet_regiis.exe -i -enable无法将“aspn

更新Android SDK tool 24.0.2 时出现ToolPackage.old01错误的解决办法

 更新Android SDK tool 到24.0.2版本时,遇到Failed to rename directory D:\android\tools to D:\android\temp\ToolPackage.old01问题,导致无法更新,应该是版本之间文件结构有冲突,解决方法如下: 1)打开temp文件夹,找到tools_r24.0.2-windows.zip压缩包 2)将tools_r24.0.2-windows.zip压缩包解开,将里面的tools文件夹覆盖android里的to

转:更新Android SDK之后Eclipse提示ADT版本过低的一个简易解决办法

拜GFW所赐,对于初学者的我来说,总会出现一些莫名其妙的问题 首先说明一下发表这一篇博文的“历史原因”吧,因为在更新SDK之后,进入Eclipse设置Android SDK目录的时候,会突然说我的版本低什么的,尝试自己解决但失败之后,我在搜索引擎上找了很多中文的资料,但都没能找到真正解决问题的方法,几个小时之后,我放弃了,于是翻出去用英文找了一下,果然马上就找到解决方法了!对此我有几个疑问:1.国内的开发都停在低版本的系统上吗?2.国内开发不更新SDK吗?3国内就没有资料可共享或用来探讨一下解决

Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat 解决办法

问题描述 安装 Python的MySQL驱动时时出现这个错误: Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat 环境 python 2.7.10 mysql 5.6 django 1.8.3 解决办法 下载  Microsoft Visual C++ Compiler for Python 2.7, 安装一下问题解决 下载链接: http://www.microsoft.com/en-us/download/co

使用的 SQL Server 版本不支持数据类型“datetime2”的解决办法

错误原因,在使用ado.net entity的时候,entity使用的数据库是sqlserver 2008, 但后来实际使用中使用的数据库是sqlserver 2005, 使用的 SQL Server 版本不支持数据类型“datetime2” The version of SQL Server in use does not support datatype ‘datetime2 解决办法 Open your EDMX in a file editor (or “open with…” in V

vs2013-tfs-疑问之版本控制器路径有双引号解决办法

问题描述: 最近项目:“****”展示交易平台 ,所以版本控制器路径为: 导致生成解决方案提示:路径有问题 解决办法: 1.直接在版本控制器重命名是不支持的,需要安装: Visual Studio Team Foundation Server 2013 Update 2 Power Tools .msi 2.删除项目重新加载绑定即可