Android 平板开发回退栈的管理

本文介绍了一种通过为每个Fragment分配类型的方式实现平板应用模块化管理的方法。通过定义FragmentType枚举并实现在BaseFragment中获取当前Fragment类型的抽象方法,可以有效地筛选和管理不同模块内的Fragment。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的平板开发分为5个模块为了方便对各个模块里面的Fragment 的管理所以我给新建的每一个Fragment设置了type,

在BaseFragment中加入了如下的方法。

   public enum FragmentType {
        CASH, MEMBER, ORDER, STATISTIC, SETTIGN
    }
  public abstract FragmentType getFragmentType();

然后每新建一个fragment我都会设置type。


    @Override
    public FragmentType getFragmentType() {
        return FragmentType.MEMBER;
    }

然后在BaseFragment中就可以获取到在Fragment栈中筛选出当前模块的Fragment。

 /**
     * 获取Fragment栈
     */
    public List<Fragment> getFragmentStack() {
        List<Fragment> fragmentList = getFragmentManager().getFragments();
        int num = fragmentList.size();
        List<Fragment> resultList = new ArrayList<>();
        for (int i = 0; i < num; i++) {
            Fragment itemFragment = fragmentList.get(i);
            if (itemFragment instanceof BaseFragment) {
                if (((BaseFragment) itemFragment).getFragmentType() == this.getFragmentType()) {
                    resultList.add(itemFragment);
                }
            }
        }
        return resultList;
    }
getFragmentManager().getFragments()是所有获取所有的Fragment,有些并没有加入到回退栈中。

回退栈中的fragment可以通过遍历回退栈中的每一个Fragment

  int count = getFragmentManager().getBackStackEntryCount();
        for (int i = 0; i < count; i++) {
            FragmentManager.BackStackEntry fragment = getFragmentManager().getBackStackEntryAt(i);
        }

获取Fragment回退栈中Fragment的个数:getFragmentManager().getBackStackEntryCount();

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值