Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Xamarin Android中的片段管理器中删除重复片段_Xamarin_Xamarin.android_Mvvmcross - Fatal编程技术网

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

从Xamarin Android中的片段管理器中删除重复片段,xamarin,xamarin.android,mvvmcross,Xamarin,Xamarin.android,Mvvmcross,我正在使用Xamarin和MVVMCross框架开发android。我想更新remove the fragment from fragment manager来处理back按钮,因为我必须在屏幕之间导航,在back Stack中进行交叉引用。所以我想从堆栈中删除重复的条目。它将从堆栈中删除重复条目,但不会使用最新片段更新backbackbackentrycount 我已经写了代码 public override void OnFragmentChanged(IMvxCachedFragme

我正在使用Xamarin和MVVMCross框架开发android。我想更新remove the fragment from fragment manager来处理back按钮,因为我必须在屏幕之间导航,在back Stack中进行交叉引用。所以我想从堆栈中删除重复的条目。它将从堆栈中删除重复条目,但不会使用最新片段更新backbackbackentrycount

我已经写了代码

   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);
    }
public override void OnFragmentChanged(IMvxCachedFragmentInfo fragmentInfo)
{
if(fragmentInfo!=null)
{
变量ifExists=
SupportFragmentManager.Fragments?.FirstOrDefault(x=>x.Tag.ToLower()==fragmentInfo.Tag.ToLower());
if(ifExists!=null)
{
var indexOf=SupportFragmentManager.Fragments.indexOf(如果存在);
var total=SupportFragmentManager.BackBackbackEntryCount;
对于(int i=indexOf+1;i
支持FragmentManager。Fragments
是只读属性(它只有一个
get
)。修改片段列表的内容对下划线片段反堆栈计数没有影响

相反,您可以尝试将堆栈向下弹出到现有片段。这将删除它上面的所有碎片

var exisitngFragment = SupportFragmentManager.FindFragmentByTag(fragmentInfo.Tag);
SupportFragmentManager.PopBackStackImmediate(exisitngFragment.Id, 0);