从Xamarin Android中的片段管理器中删除重复片段
我正在使用Xamarin和MVVMCross框架开发android。我想更新remove the fragment from fragment manager来处理back按钮,因为我必须在屏幕之间导航,在back Stack中进行交叉引用。所以我想从堆栈中删除重复的条目。它将从堆栈中删除重复条目,但不会使用最新片段更新backbackbackentrycount 我已经写了代码从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
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);