微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Fragment 中管理 BackStack 的最佳方法是什么

如何解决在 Fragment 中管理 BackStack 的最佳方法是什么

你好,我想在片段中管理 BackStack 我已经实现了一个方法,但我对它不满意,因为如果我一次又一次地切换到多个片段,那么我希望那个 backstack 不要一次又一次地切换到同一个片段,只是去每个片段一次向后,最后一次到 Home_Fragment 然后退出

例如:如果我从通知切换到配置文件并通过一次又一次地按下它使它像一个循环,当我开始按下它时它也遵循我不想要的相同循环,我希望即使用户也做一个像这样的事情,返回堆栈只进入每个片段一次,最后进入主片段并退出

就像 Instagram 或 pintrest 之类的大应用

这是一个代码

private final BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener =
            item -> {
                Fragment selectedFragment = null;
                switch (item.getItemId()) {
                    case R.id.nav_home:
                        selectedFragment = new Home_Fragment();
                        break;
                    case R.id.nav_following:
                        selectedFragment = new Following_Fragment();
                        break;
                    case R.id.nav_upload:
                        selectedFragment = new Upload_Fragment();
                        break;
                    case R.id.nav_notification:
                        selectedFragment = new Notification_Fragment();
                        break;
                    case R.id.nav_profile:
                        selectedFragment = new Profile_Fragment();
                        break;
                }
                assert selectedFragment != null;
                getSupportFragmentManager().beginTransaction().addToBackStack(String.valueOf(selectedFragment)).replace(R.id.fragment_container,selectedFragment).commit();
                return true;
            };

解决方法

我很难理解问题/问题,但是如果您想避免重新添加已经添加的片段,那么您可以在添加新片段之前检查堆栈是否已经存在。此 article 可能会有所帮助。

,

使用popBackStackImmediate("your-tag",0)findFragmentByTag 中的 fragmentManager 并替换它(小心一次又一次地添加到后台堆栈)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。