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

相关推荐
修炼者3 小时前
【进阶Android】HashMap 的并发“车祸”
android
冬奇Lab5 小时前
Android 15音频子系统(六):音频焦点管理机制深度解析
android·音视频开发·源码阅读
LionelRay7 小时前
Thinking in Compose
android
用户69371750013848 小时前
Google 推 AppFunctions:手机上的 AI 终于能自己干活了
android·前端·人工智能
用户69371750013849 小时前
AI让编码变简单,真正拉开差距的是UI设计和产品思考
android·前端·人工智能
zh_xuan9 小时前
Android Jetpack DataStore存储数据
android·android jetpack·datastore
程序员陆业聪9 小时前
在 Android 上跑大模型,你选错引擎了吗?
android
studyForMokey10 小时前
【Android面试】View绘制流程专题
android·面试·职场和发展
jjinl12 小时前
Android 资源说明
android
恋猫de小郭14 小时前
Swift 6.3 正式发布支持 Android ,它能在跨平台发挥什么优势?
android·前端·flutter