MvvmCross Android 片段添加到后台堆栈

Posted

技术标签:

【中文标题】MvvmCross Android 片段添加到后台堆栈【英文标题】:MvvmCross Android Fragments Add To Back Stack 【发布时间】:2015-09-30 05:28:27 【问题描述】:

我正在尝试将 MvvmCross 用于我的 Xamarin.android 应用程序,使用 AndroidSupport 的东西 (https://github.com/MvvmCross/MvvmCross-AndroidSupport)。

我已经完成了很多工作,但是当我导航到它时,我无法弄清楚我是如何将片段添加到后台堆栈的。有人可以帮忙吗?

马特

【问题讨论】:

【参考方案1】:

我更新了示例以显示如何进行导航和返回堆栈处理:https://github.com/MvvmCross/MvvmCross-AndroidSupport/pull/44

我现在意识到这可能不太方便,所以我正在考虑添加这个:

protected void ShowFragment(string tag, int contentId, Bundle bundle = null, bool addToBackStack = false)

到 CachingFragment 类。这将使您能够将其添加到演示者的 show 方法中。

【讨论】:

新版本已经发布,包括对backstack的修复:nuget.org/packages/Cirrious.MvvmCross.Droid.Support.Fragging/… 我已经为这个问题添加了更多修复:github.com/MvvmCross/MvvmCross-AndroidSupport/pull/51【参考方案2】:

最后我发现最好的方法是重写 OnFragmentChanging 方法。这样您就可以有选择地将特定片段添加到后台堆栈:

    public override void OnFragmentChanging(string tag, FragmentTransaction transaction)
    
        if (tag == typeof (MyViewModel).Name)
            transaction.AddToBackStack(typeof (MyViewModel).Name);
        base.OnFragmentChanging(tag, transaction);
    

【讨论】:

以上是关于MvvmCross Android 片段添加到后台堆栈的主要内容,如果未能解决你的问题,请参考以下文章

在 Xamarin.Android 中通过 MVVMCross 绑定 OxyPlot

来自后台堆栈的片段 onResume

使用Android导航组件时如何从后台获取片段?

将新片段添加到后台堆栈是不是会暂停当前片段?

Android从后台堆栈中删除事务

Android Navigation - 导航时弹出当前片段