多个Fragment在屏幕翻转会重影问题的解决
fragment使用add和hide而不用replace的方法添加到activity中,如果屏幕翻转可能会又add新的fragment进去,所以会重影。
如果有一个sparsearray保存fragment,那么在初始化的时候就应该用
private void initFragment(Bundle savedInstanceState) {
//set up fragments
// fragments.append(MAIN_INDEX, MainFragment.newInstance());
// fragments.append(SUCCESS_INDEX, SuccessFragment.newInstance());
// fragments.append(FAILED_INDEX, FailedFragment.newInstance());
// fragments.append(NONE_INDEX, NoneFragment.newInstance());
fragments = new SparseArray<>();
//Main Fragment
Fragment mainFragment = getSupportFragmentManager().findFragmentByTag(String.valueOf(MAIN_INDEX));
if (mainFragment == null) {
mainFragment = MainFragment.newInstance();
}
fragments.append(MAIN_INDEX, mainFragment);
//Success Fragment
Fragment succcessFragment = getSupportFragmentManager().findFragmentByTag(String.valueOf(SUCCESS_INDEX));
if (succcessFragment == null) {
succcessFragment = SuccessFragment.newInstance();
}
fragments.append(SUCCESS_INDEX, succcessFragment);
//Failed Fragment
Fragment failedFragment = getSupportFragmentManager().findFragmentByTag(String.valueOf(FAILED_INDEX));
if (failedFragment == null) {
failedFragment = FailedFragment.newInstance();
}
fragments.append(FAILED_INDEX, failedFragment);
//none Fragment
Fragment noneFragment = getSupportFragmentManager().findFragmentByTag(String.valueOf(NONE_INDEX));
if (noneFragment == null) {
noneFragment = NoneFragment.newInstance();
}
fragments.append(NONE_INDEX, noneFragment);
//add to activity
for (int i = ; i < fragments.size(); i++) {
Fragment f = fragments.valueAt(i);
if (!f.isAdded())
getSupportFragmentManager()
.beginTransaction()
.add(R.id.container, f, String.valueOf(fragments.keyAt(i)))
.hide(f)
.commit();
}
}
不直接append新的fragment,而是通过fragmentsupportmanager先检查有没有已有的fragment,这样就可以解决重影问题。
需要注意的是:setRetainInstance(true)必须设置,这样fragment才不会在manager中销毁,替换fragment后想修改数据才不会出现nullpointerexception错误
多个Fragment在屏幕翻转会重影问题的解决的更多相关文章
- uwp - 禁用屏幕翻转/禁用屏幕旋转/禁用横屏模式
原文:uwp - 禁用屏幕翻转/禁用屏幕旋转/禁用横屏模式 解决方案目录 > Package.appxmanifest 双击打开,把支持的旋转:纵向勾上,只勾这一个其他不勾,就可以了.同理,想让 ...
- JavaScript获取手机屏幕翻转方法
/*屏幕翻转*/ window.addEventListener(window['onorientationchange'] ? 'orientationchange' : 'resize', fun ...
- 国际化支持、activity生命周期、屏幕翻转的ui适配
国际化 对于手机的不同语言做出不同的语言描述,这里只是简单的提一下,实际上针对比较大型的项目,有可能不同的语言要做不同的ui适配. 例如下面:中文长度不长但是在德语中占据很长的位置,这个就要针对性的适 ...
- 生活实遇记-Kindle好久没用,屏幕一直处于电池状态,怎么解决?
2018-01-02 实遇记-Kindle好久没用,屏幕一直处于电池状态,怎么解决? 今天我翻腾出自己的kindle,好久没用了,屏幕一直是一个电池状态,充电头+线充了2个钟头,按电源键木有反应,也是 ...
- Android开发系列(一)Activity与Fragment获取屏幕获取屏幕像素的不同方式
Activity中常用的获取屏幕像素代码: //获取屏幕像素相关信息 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getD ...
- 获取屏幕翻转:var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',这段是为了获取移动端屏幕是否翻转(手机重力 ...
- cocos2d-x 2.x 支持多个方向屏幕翻转
主要改动 RootViewController.mm 的 supportedInterfaceOrientations 方法 1.四个方向 UIInterfaceOrientationMaskAll ...
- Unity 手机屏幕翻转问题 横屏
1920*1080的图在1080*1920的设备上观看效果: 如果要做横屏游戏,就要改Build中的Player Settings,强制左旋转或右旋转,默认是Auto 垂直于地面的手机在横屏下分辨率是 ...
- Checkbox Text 重影问题的解决的方法
Checkbox有个属性值 <CheckBox android:id="@+id/cb_reg_agree" style="@style/reg_checkbox_ ...
随机推荐
- Oozie与Coordinator调度讲解及系统时区配置与定时触发两种配置方式
1:修改本地linux时区 查看时区 - 号代表西 + 号 代表东 北京时间是东八区 设置时区的配置文件所在位置 cd /usr/share/zoneinfo/ 选择以亚洲的上海 的时区为基址 删除 ...
- sg函数&&子状态的讨论
题目链接:https://cn.vjudge.net/contest/269933#problem/H 具体思路:首先,这是一个公平的比赛,并且是两个人参与,两个人都足够聪明,并且可以通过有限步结束比 ...
- 如何将vmworkstation的虚机导成ovf模版
如何将vmworkstation的虚机导成ovf模版 最近碰见一个事情挺烦的苦恼了我好长一段时间,是这样的公司要进行攻防演练需要搭建一个owaps的靶站练手,环境我在我的电脑上已经搭好了(vmwork ...
- cin循环输入控制问题
之前写一个简单的输入节点值自动生成链表的测试程序,发现cin的输入控制好像在VC++6.0和VS2010中不一样,特此记录. 现在有以下代码: vector<int> ivec; int ...
- 使用迭代法穷举1到N位最大的数
这是何海涛老师剑指offer上面第12题,这题首先注意不能使用整数int型作为操作对象,因为N很大时明显会溢出.这种大数据一般都是使用的字符串来表示. 直接法就是:1.针对字符串的加法,涉及循环进位及 ...
- xv6/bootasm.S + xv6/bootmain.c
xv6/bootasm.S #include "asm.h" #include "memlayout.h" #include "mmu.h" ...
- 42.Trapping Rain Water---dp,stack,两指针
题目链接:https://leetcode.com/problems/trapping-rain-water/description/ 题目大意:与84题做比较,在直方图中计算其蓄水能力.例子如下: ...
- 关于一些对location认识的误区
1. location 的匹配顺序是“先匹配正则,再匹配普通”. 矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”.我这么说,大家一定会反驳我,因为按“先匹配普通,再匹配正则”解释 ...
- /proc/sys 子目录的作用
该子目录的作用是报告各种不同的内核参数,并让您能交互地更改其中的某些.与 /proc 中所有其他文件不同,该目录中的某些文件可以写入,不过这仅针对 root. 其中的目录以及文件的详细列表将占据过多的 ...
- Django项目上传到AWS服务器上
EC2是亚马逊(Amazon.com)提供的弹性云计算服务:Apache是一个跨平台的Web服务器端软件,可以使Python.PHP.Perl等语言编写的程序运行在服务器上:Django是一个Web程 ...