Android横竖屏切换中的状态恢复------不调用Oncreate()的方式
来源:互联网 发布:网络转载犯法吗 编辑:程序博客网 时间:2024/06/18 16:30
编程中遇到的问题:
在做一个小的音乐播放器时,想要做到横竖屏切换时自动改变布局的效果。
横屏:
竖屏:
横竖屏变换是通过在res文件夹下新建layout_port和layout_land文件夹实现的(注意:layout文件夹下的布局文件不要删,并且前面两个文件夹中的布局文件与layout中的同名。)。这样做的话Activity中的代码不需要改动,便能自动实现横竖屏转换。但是,这样做带来了一个问题,每次横竖屏转换时,系统都要调用一次onCreate()方法来初始化布局,这样就导致了之前的一些操作,信息等的丢失。
解决方案:
苦于这个问题,便在网上寻求帮助。终于找到了解决方案:①首先在AndroidManifest.xml中设置activity的属性 android:configChanges="orientation|keyboard|keyboardHidden|screenSize"(注意:android4.0之后的版本screenSize属性值是不可缺的)。②然后再在activity类中添加
如下方法------
public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }当完成了以上两步配置,在发生横竖屏切换时,系统默认不是调用onCreate()方法,而是执行onConfigurationChanged方法。
以上完成了避免调用onCreate()的操作,但是存在屏切换状态,数据丢失的问题。简单的解决方案是:
在onConfigurationChanged方法中进行恢复。改进代码如下
public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig);if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { setContentView(R.layout.activity_main); findView(); setListener() } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { setContentView(R.layout.activity_main); findView(); setListener() }}
findView()方法就是对View的重新获取,setListener()是对监听器的重新关联。(具体代码就不写了)。
0 0
- Android横竖屏切换中的状态恢复------不调用Oncreate()的方式
- Android横竖屏切换中的状态恢复------不调用Oncreate()的方式
- Android横竖屏切换不重新调用onCreate()
- Android横竖屏切换不重新调用onCreate()
- Android横竖屏切换不重新调用onCreate()
- android横竖屏切换,不重新执行onCreate的方法
- android横竖屏转换不调用oncreate
- 横竖屏切换时不重新加载onCreate
- 屏幕横竖屏切换时,Activity不重复执行oncreate
- 安卓横竖屏切换调用onCreate问题
- android 禁止横竖屏切换时调用onCreate函数
- Android 3.2 以上转屏,切换屏幕,横竖屏(onConfigurationChanged)会重新 OnCreate 的解决方案
- android转屏,切换屏幕,横竖屏(onConfigurationChanged)会重新 OnCreate 的解决方案
- android转屏,切换屏幕,横竖屏(onConfigurationChanged)会重新加载 OnCreate 的解决方案
- android转屏,切换屏幕,横竖屏(onConfigurationChanged)会重新 OnCreate 的解决方案
- android转屏,切换屏幕,横竖屏(onConfigurationChanged)会重新加载 OnCreate 的解决方案
- android转屏,切换屏幕,横竖屏(onConfigurationChanged)会重新加载 OnCreate 的解决方案
- Activity 横竖屏切换时 onCreate 的执行与否
- JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
- What exactly is the difference between “pass by reference” in C and in C++?
- 登录页面缓存,等待
- 使用opencv处理android中的yuv420sp(NV21)图像
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- Android横竖屏切换中的状态恢复------不调用Oncreate()的方式
- c# 在类中将数据传递给窗体
- 修改 Ubuntu 用户的 Shell
- 信息论中的一些基本知识
- bump Mapping Using CG(3rd Edition)
- 网络首发cocos2d-x手游《打小三》V1.0版本的win32版本
- Kill Process in Linux or Terminate a Process in UNIX / Linux Systems
- VPS 防止 SSH 暴力登录尝试攻击
- 通用邮箱正则表达式