Android fragments 来自ViewModel的MvvmCross close片段

Android fragments 来自ViewModel的MvvmCross close片段,android-fragments,xamarin.android,mvvmcross,Android Fragments,Xamarin.android,Mvvmcross,我正在写一个android应用程序。我有一个主视图,它是MvxCachingFragmentCompatActivity类型,它管理片段。在当前显示的片段的ViewModel中,我调用Close(this)来显示先前显示的片段,但什么都没有发生 我使用现有的MvxFragmentsPresenter。为了进行测试,我创建了这个演示者的一个副本,并在调试下检查了ChangePresentation和Close方法是否被调用,CloseFragment(viewModel)是否被调用,但什么都没有发

我正在写一个android应用程序。我有一个主视图,它是MvxCachingFragmentCompatActivity类型,它管理片段。在当前显示的片段的ViewModel中,我调用Close(this)来显示先前显示的片段,但什么都没有发生

我使用现有的MvxFragmentsPresenter。为了进行测试,我创建了这个演示者的一个副本,并在调试下检查了ChangePresentation和Close方法是否被调用,CloseFragment(viewModel)是否被调用,但什么都没有发生。在输出中,我看不到任何错误。 关闭尝试后,输出:

[0:]mvx:诊断:34.91请求更改演示文稿12-13 07:14:01.438 D/Mono(4912):装配参考添加参考 MvvmCross.Droid.Support.V7.AppCompat[0xe8017220]> System.Core[0xdd8db900]:26

目前,为了实现所需的行为,我只需在片段视图代码隐藏中调用OnBackPressed(),但我认为这太过分了:

public override void OnResume()
{
    var closeButton = Activity.FindViewById<Button>(Resource.Id.close_button);
    closeButton.Click += (s, e) =>
    {
        Activity.OnBackPressed();
    };

    base.OnResume();
}
public override void OnResume()
{
var closeButton=Activity.findviewbyd(Resource.Id.close_按钮);
关闭按钮。单击+=(s,e)=>
{
Activity.OnBackPressed();
};
base.OnResume();
}
但在iOS应用程序上,这种关闭方法正如预期的那样工作


我做错了什么?

为了让关闭函数为我工作,我必须将MvxCachingFragmentCompatActivity中的关闭方法重写为:

    public override bool Close(IMvxViewModel viewModel)
    {
        CloseFragment(viewModel.GetType().Name, Resource.Id.content_frame);
        Finish();
        return true;
    }

为了使Close函数对我起作用,我必须将MvxCachingFragmentCompatActivity中的Close方法重写为:

    public override bool Close(IMvxViewModel viewModel)
    {
        CloseFragment(viewModel.GetType().Name, Resource.Id.content_frame);
        Finish();
        return true;
    }

根据Stupidus的观点,working close方法如下所示:

public override bool Close(IMvxViewModel viewModel)
{
    OnBackPressed();
    return base.Close(viewModel);
}

根据Stupidus的观点,working close方法如下所示:

public override bool Close(IMvxViewModel viewModel)
{
    OnBackPressed();
    return base.Close(viewModel);
}

谢谢回复!不幸的是,这不适合我的情况。Finish()关闭活动,但我只想关闭片段。CloseFragment不会关闭它。但是你帮我找到了更简洁的解决方案。谢谢你的回复!不幸的是,这不适合我的情况。Finish()关闭活动,但我只想关闭片段。CloseFragment不会关闭它。但你帮我找到了更简洁的解决方案。