如何在MvvmCross 4.1.4中正确实现Fragments

6
我正在寻找与当前mvvmcross版本中的片段工作的示例或文档。我发现了很多关于旧版本的信息,但是我不知道现在应该如何实现它。
到目前为止,我找到的最好的信息在这篇文章中: http://gregshackles.com/presenters-in-mvvmcross-navigating-android-with-fragments/ 但这篇文章已经过去一年了,我认为现在可能已经有了更新/更好的方法来做到这一点。
我想要的是拥有一个单独的Activity(就像SPA或者拥有MainView)。这个Activity应该包含一个或两个片段(fragment),在点击按钮时,我希望能够导航/更改到另一个片段,并将当前片段保留在后退栈上进行导航。或者建议只使用Activity进行导航,而不是实现SPA吗?
感谢您的帮助! Timo
1个回答

15

在MvvmCross中使用碎片的新方法是通过在碎片上使用属性。

[MvxFragment(typeof(ActivityHostViewModel), Resource.Id.content_frame, true)]
public class HomeFragment : BaseFragment<HomeViewModel>
{
}

MvvmCross presenter会认识到这是一个fragment,并在与主宿主视图模型连接的主宿主Activity中显示它。

为了支持Presenter中的fragments,您需要将以下内容添加到您的setup.cs文件中。

protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
    var mvxFragmentsPresenter = new MvxFragmentsPresenter(AndroidViewAssemblies);
    Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(mvxFragmentsPresenter);
    return mvxFragmentsPresenter;
}

这里提供完整的示例:https://github.com/MvvmCross/MvvmCross/tree/develop/TestProjects/Android-Support/Fragments


谢谢您的快速回复,我已经看过这个例子了,但不确定这是否是目前正确的方法。我会深入研究一下。 :) - Timo
如果您对此有任何问题,请告诉我。 - Martijn00
嗨Martijn00,我使用了你在github上提供的示例。它非常有用和方便。我卡在了以下http://stackoverflow.com/questions/37333869/customfragment-in-mvvmcross - casillas
我在这个网址上提出了一个关于此主题的新问题:http://stackoverflow.com/questions/37433704/fragments-in-mvvmcross-4-1-4-will-not-be-displayed-in-the-activity-android - Timo
1
嗨Martijn00,示例链接返回404错误,是否可以更新链接?谢谢! - Niels
我下载了示例代码并理解了它的工作原理 - 当调用 ShowViewModel(myViewModelType) 时,它会将相应的视图注入到 content_frame 中。但是在 iOS 上这样做会发生什么呢?它不会将一个新的 UIViewController 推入堆栈中吗? - Drake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接