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,有的话就把之前的隐藏就可以了;

相关推荐
七月.末1 小时前
安卓aab包的安装教程,附带adb环境的配置
android·adb
SRC_BLUE_176 小时前
SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based
android·网络安全·adb·less
无尽的大道9 小时前
Android打包流程图
android
镭封11 小时前
android studio 配置过程
android·ide·android studio
夜雨星辰48711 小时前
Android Studio 学习——整体框架和概念
android·学习·android studio
邹阿涛涛涛涛涛涛11 小时前
月之暗面招 Android 开发,大家快来投简历呀
android·人工智能·aigc
IAM四十二11 小时前
Jetpack Compose State 你用对了吗?
android·android jetpack·composer
奶茶喵喵叫12 小时前
Android开发中的隐藏控件技巧
android
Winston Wood13 小时前
Android中Activity启动的模式
android
众乐认证13 小时前
Android Auto 不再用于旧手机
android·google·智能手机·android auto