【发布时间】:2017-03-20 16:12:30
【问题描述】:
您好 Xamarin/MvvmCross 开发人员,
我遇到了 MvxCachingFragmentCompatActivity 的问题,或者我认为这是一个问题。我不知道这是否是预期的行为。
在我的应用程序中,我在容器视图中使用片段。在销毁后恢复活动时,我遇到了 FragmentBackStack 问题。如果我从我的初始片段进入三层,进入后台并返回前台,只有最后两个视图被恢复。请注意,这是在开发者选项中打开“不保留活动”的情况。
是否有任何特定的设置/指示我必须给 MvvmCross 以指示他们我希望他们处理我的视图模型保存/恢复功能。在我浏览的样本中没有看到任何内容。
我曾经对旧版本的 MvvmCross 使用手动方法,其中我在 ContainerViewModel 中存储了对所有视图模型的引用,然后在恢复时读取它。但是当你可以在 backstack 上有多个相同的视图时,这并不特别好。
我在应用程序中没有什么特别之处,它是 MvxFragment 用于所有视图的基本用法。我确实有一个自定义演示者,但我只覆盖 ShowFragment,所以我可以显示弹出视图而不是替换。没有被恢复的视图都没有使用这个功能,所以它不会干扰任何东西。
任何帮助将不胜感激。 丹麦人
更新 1
请记住,这种情况下的视图是 MvxFragments。
在研究这个时,我发现了一些与 MvxCachingFragmentActivity 相关的奇怪的回栈行为。在执行恢复功能时,我在缓存错误中找不到片段标记,所以我添加了这个
FragmentCacheConfiguration.RegisterFragmentToCache<View, ViewModel>(typeof(ViewModel).FullName);
当我为第二个显示的视图添加这个(在第一个视图之后)时,第一个视图永远不会添加到 backstack 中。导致一个奇怪的后退导航错误,即使 AddToBackstack 对于我们导航的第一个视图设置得太真,也会在第二个视图上关闭。
当我删除该行时,导航完全正常。我不知道为什么会这样。
【问题讨论】:
标签: android xamarin xamarin.android mvvmcross