从Xamarin Android中的片段管理器中删除重复片段

时间:2017-05-05 15:11:01

标签: xamarin xamarin.android mvvmcross

我正在使用Xamarin和MVVMCross框架开发android。我想更新从片段管理器中删除片段以处理后退按钮,因为我必须在屏幕之间导航,在后面的堆栈中进行交叉引用。所以我想从堆栈中删除重复的条目。它从堆栈中删除重复的条目,但它不会使用最新的片段更新BackStackEntryCount。

我已经编写了代码

   public override void OnFragmentChanged(IMvxCachedFragmentInfo fragmentInfo)
    {
        if (fragmentInfo != null)
        {
            var ifExists =
                SupportFragmentManager.Fragments?.FirstOrDefault(x => x.Tag.ToLower() == fragmentInfo.Tag.ToLower());

            if (ifExists != null)
            {
                var indexOf = SupportFragmentManager.Fragments.IndexOf(ifExists);
                var total = SupportFragmentManager.BackStackEntryCount;
                for (int i = indexOf + 1; i < total; i++)
                {
                    SupportFragmentManager.Fragments.RemoveAt(i);
                }
            }
        }

        base.OnFragmentChanged(fragmentInfo);
    }

1 个答案:

答案 0 :(得分:0)

signal(SIGINT, int_handler); 是一个只读属性(它只有一个SupportFragmentManager.Fragments)。修改片段列表的内容对下划线片段后台堆栈计数没有影响。

您可以尝试的是将堆栈弹出到现有片段。这应该删除它上面的所有片段。

get