Android fragments 来自ViewModel的MvvmCross close片段
我正在写一个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(),但我认为这太过分了: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)是否被调用,但什么都没有发
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不会关闭它。但你帮我找到了更简洁的解决方案。