我有一个Activity,它在框架布局中托管片段.如果我将显示的片段更改为另一个片段,则片段不会添加到后台,因此使用“后退”按钮会立即关闭应用而不是导航回来(OnBackPressed中的FragmentManager.BackStackEntryCount始终为0) ()-打回来).
在托管片段的“MainActivity”的ViewModel中,我通过ShowViewModel<> -method显示片段:
public class MainViewModel : MvxViewModel { public IMvxCommand ShowHomeCommand { get { return new MvxCommand(ShowHomeExecuted); } } private void ShowHomeExecuted() { ShowViewModel<HomeViewModel>(); } }
fragment-class有一个注释,用于将ViewModel分配给host-activity:
[MvxFragment(typeof(MainViewModel),Resource.Id.fragment_container)] [Register("namespace.of.HomeFragment")]
我在Setup-class中使用默认的AndroidViewPresenter:
protected override IMvxAndroidViewPresenter CreateViewPresenter() { var mvxFragmentsPresenter = new MvxFragmentsPresenter(AndroidViewAssemblies); Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(mvxFragmentsPresenter); return mvxFragmentsPresenter; }
我期望在MvxFragment-Attribut或MvxFragment类中有一个参数“AddToBackstack”或类似的东西但是没有这样的东西.我是否遗漏了某些东西,或者目前在MvvmCross 4.0的新片段机制中是否支持后备栈?
解决方法
你可以做的是在你的MainActivity中添加这样的东西:
public override void OnBeforeFragmentChanging (IMvxCachedFragmentInfo fragmentInfo,Android.Support.V4.App.FragmentTransaction transaction) { var currentFrag = SupportFragmentManager.FindFragmentById (Resource.Id.content_frame) as MvxFragment; if(currentFrag != null && fragmentInfo.ViewModelType != typeof(MenuViewModel) && currentFrag.FindAssociatedViewModelType() != fragmentInfo.ViewModelType) fragmentInfo.AddToBackStack = true; base.OnBeforeFragmentChanging (fragmentInfo,transaction); }
这将在导航发生之前将片段添加到backstack.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。