Android Fragment重叠,车机Fragment重叠 换肤或后台重启后重叠问题;

之前写过了一篇关于Fragment重叠的问题,

Fragment重叠,使用show和hide控制显示和隐藏界面重叠问题

但这次在车机上遇到了一个Fragment重叠的问题,以上的几种方法都解决不了,所以来记录一下;

该车机在切换到后台后会回调 onSaveInstanceState 方法,再次打开时没有走onCreate方法,所以在onSaveInstanceState方法中把当前显示的fragment删除后,从后台切换回来就是空白页了;

车机在换肤后(切换黑夜和白天模式)会回调 onSaveInstanceState 和 onCreate 方法,所以就从onCreate方法下手,下面是代码

java 复制代码
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(savedInstanceState != null){
            hideFragment();
        }
        setContentView(R.layout.activity_main);

    }



    private void hideFragment() {
        FragmentManager supportFragmentManager = getSupportFragmentManager();
        F1Fragment f1 = (F1Fragment) supportFragmentManager.findFragmentByTag(F1Fragment.class.getName());
        F2Fragment f2 =  (F2Fragment) supportFragmentManager.findFragmentByTag(F2Fragment.class.getName());
        F3Fragment f3 = (F3Fragment) supportFragmentManager.findFragmentByTag(F3Fragment.class.getName());
        F4Fragment f4 = (F4Fragment) supportFragmentManager.findFragmentByTag(F4Fragment.class.getName());
        FragmentTransaction transaction = supportFragmentManager.beginTransaction();
        if (f1!=null) transaction.hide(f1);
        if (f2!=null) transaction.hide(f2);
        if (f3!=null) transaction.hide(f3);
        if (f4!=null) transaction.hide(f4);
        transaction.commit();
    }

然后在 add Fragment时设置Tag就可以了;

java 复制代码
 transaction.add(R.id.fl, targetFragment ,targetFragment.getClass().getName()).commit();

根据Tag获取Activity销毁前的Fragment,并做处理。这样在Activity重启后会判断之前保存的是否有Fragment,有的话就把之前的隐藏就可以了;

相关推荐
sun0077004 小时前
android ndk编译valgrind
android
AI视觉网奇5 小时前
android studio 断点无效
android·ide·android studio
jiaxi的天空5 小时前
android studio gradle 访问不了
android·ide·android studio
No Silver Bullet6 小时前
android组包时会把从maven私服获取的包下载到本地吗
android
catchadmin6 小时前
PHP serialize 序列化完全指南
android·开发语言·php
tangweiguo030519877 小时前
Kable使用指南:Android BLE开发的现代化解决方案
android·kotlin
00后程序员张10 小时前
iOS App 混淆与资源保护:iOS配置文件加密、ipa文件安全、代码与多媒体资源防护全流程指南
android·安全·ios·小程序·uni-app·cocoa·iphone
柳岸风11 小时前
Android Studio Meerkat | 2024.3.1 Gradle Tasks不展示
android·ide·android studio
编程乐学11 小时前
安卓原创--基于 Android 开发的菜单管理系统
android
whatever who cares13 小时前
android中ViewModel 和 onSaveInstanceState 的最佳使用方法
android