前言:

项目是基于平板开发的,设计的界面是要求横屏展示界面。所以我将所有的Activity都强制设置为横屏

android:screenOrientation="landscape"

-----------------------------------------------------------------------------------------------------

问题:

主界面,最常见的Activity+n个Fragment

我这里使用的hide、show Fragment的方式来切换Fragment,当关闭手机、平板屏幕再打开,会发现Fragment界面重叠

安卓开发_慕课网_Fragment实现Tab(App主界面)

-----------------------------------------------------------------------------------------------------

1、先通过界面来了解具体情况

界面左侧是4个Tab按钮,对应四个Fragment界面,如下面两个图 ,是正常的界面显示效果,这里我已经将这个Activity强制为横屏显示

   

2、正常情况下,我这个时候关闭了屏幕,然后在打开屏幕,可以看到 这个时候会显示 之前打开过的Fragment界面,导致界面重叠

此时,我们测试将activity横屏显示去掉,让他竖屏显示,然后在进行关屏幕,打开屏幕操作,会发现 在竖屏的情况下,并没有发生界面重叠的问题。

那么我们就可以猜出问题所在了:生命周期

3、接着我们给Activity的onCreate() onResume()方法 Fragment的onCreateView() onResume()方法打印Log

  (1)看我们关闭屏幕的时候执行的生命方法

  这里我们可以看到,当我们关闭屏幕的时候,很显然Activity又执行了一遍生命周期

  (2)在看我们打开屏幕的时候执行的生命方法

  

  可以看到,Activity又执行了一次onCreate()方法,而Fragment执行了多次onCreateView()

  总结一下:锁屏关闭屏幕后,Activity会由横屏切换为竖屏,这个时候执行了onCreate()方法,但是Activity原来对应的Fragment并没有被销毁,(导致第一张生命周期图中 今日任务Fragment执行了两次onresume,因为新建了一个和原来未被销毁的一个,此时存在两个今日任务Fragment), 解屏打开屏幕后,Activity又有竖屏切换为横屏(我们强制设置的横屏显示),又执行了onCreate()方法,导致又创建了一次Fragment,但是原来的Fragment还是没有被销毁(所以第二章生命周期图中,我们可以看到此时存在了3个今日任务Fragement的onResume()方法)。那么最终就会导致打开屏幕后 之前所有未被销毁的Fragment都显示出来。

  解决方法:

  我们不让开关屏幕的时候Activity走生命周期,那么在清单文件中给Activity设置下面这两个属性即可

 android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden|screenSize"

  注意:4.0以上的configChanges需要添加screenSize属性,否则切换横竖屏仍会执行生命周期

Android横屏下Fragment界面重叠问题的更多相关文章

  1. Android 使用Fragment界面向下跳转并一级级返回

    http://www.cnblogs.com/_ymw/p/4227862.html 1.首先贴上项目结构图: 2.先添加一个接口文件BackHandledInterface.java,定义一个set ...

  2. [转]Android 使用Fragment界面向下跳转并一级级返回

      1.首先贴上项目结构图: 2.先添加一个接口文件BackHandledInterface.java,定义一个setSelectedFragment方法用于设置当前加载的Fragment在栈顶,主界 ...

  3. Android应用经典主界面框架之中的一个:仿QQ (使用Fragment, 附源代码)

    备注:代码已传至https://github.com/yanzi1225627/FragmentProject_QQ 欢迎fork,如今来审视这份代码,非常多地方写的不太好,欢迎大家指正.有时间我会继 ...

  4. Android Fragment学习笔记(二)----Fragment界面添加和管理

    Fragment界面添加 了解过fragment的生命周期等简单知识,于是去看官方文档来了解更多相关内容,要添加fragment到我们的UI界面中,给出了两种常用的方法,第一个是在activity的布 ...

  5. Android 自学之基本界面组件(下)

    按钮(Button)与图片按钮(ImageButton)组件的功能和用法 Button继承了TextView,ImageButton继承了Button.不管是Button还是ImageButton,他 ...

  6. Android应用经典主界面框架之二:仿网易新闻client、CSDN client (Fragment ViewPager)

    另外一种主界面风格则是以网易新闻.凤凰新闻以及新推出的新浪博客(阅读版)为代表.使用ViewPager+Fragment,即ViewPager里适配器里放的不是一般的View.而是Fragment.所 ...

  7. Android控件-Fragment+ViewPager(高仿微信界面)

    什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个 ...

  8. [Android] Android 手机下 仿 微信 客户端 界面 -- 微聊

    Android 手机下 仿 微信 客户端 界面 -- 微聊 (包括聊天列表 + 聊天对话页 + 朋友圈列表页 + 我的/发现 列表页) 项目演示: 功能说明: 1)底部标签切换 (TabHost + ...

  9. Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml

    Android开发:碎片Fragment完全解析   为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activi ...

随机推荐

  1. DOM-Document类型

    Document类型 JavaScript通过Document类型表示文档.在浏览器中,document对象是HTMLDocument(继承自Document类型)的一个实例,document对象是w ...

  2. Stop sucking,Become awesome.这一年我做到了么

    一年前,我因一些原因,工作变动,当时痛下决心,引用了<程序员的呐喊>封面的那句话: Just stop sucking and become awesome! 一年很快就过去了,最近看了不 ...

  3. 【LeetCode】Increasing Triplet Subsequence(334)

    1. Description Given an unsorted array return whether an increasing subsequence of length 3 exists o ...

  4. SQLServer学习笔记系列12

    一.写在前面的话 这个sql学习系列,今天准备告一段落,虽然短短的十几篇文章,深刻感受到将学习的东西记录下来,是需要一种坚持! 这些东西只有反复的学习吸收,最终沉淀下来的才是属于自己的知识.也是提醒自 ...

  5. shell调用函数返回值深入分析

    编写shell脚本过程中,我们经常会自定义一些函数,并根据函数的返回值不同来执行相应的流程,那么我们如何来获取函数的返回值呢? 首先shell中调用函数有两种方式: 第一种:value=`functi ...

  6. 4.DB Initialization(数据库初始化)[EF Code-First系列]

    前面的例子中,我们已经看到了Code-First自动为我们创建数据库的例子. 这里我们将要学习的是,当初始化的时候,Code-First是怎么决定数据库的名字和服务的呢??? 下面的图,解释了这一切! ...

  7. [WCF编程]10.操作:事件

    一.事件概述 基础的WCF回调机制并不能阐明客户端与服务之间交互的本质.双向回调的规范使用可以通过事件来完成.客户端发生的相关事项都可以通过事件通知客户端或者多个客户端.事件可能源于直接的客户端调用, ...

  8. [WCF编程]1.WCF入门示例

    一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...

  9. No.026:Remove Duplicates from Sorted Array

    问题: Given a sorted array, remove the duplicates in place such that each element appear only once and ...

  10. PHP规范PSR2

    为了尽可能的提升阅读其他人代码时的效率,下面例举了一系列的通用规则,特别是有关于PHP代码风格的.各个成员项目间的共性组成了这组代码规范.当开发者们在多个项目中合作时,本指南将会成为所有这些项目中共用 ...