关闭最后一个片段后关闭应用程序

Close app after closing last fragment

我正在用 Xamarin.Android 和 MvvmCross 编写应用程序。我正在使用片段并有一个 "content container" 设计,我在 content_frame 视图中显示片段:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center">
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true" />
</FrameLayout>

一切正常,我可以通过 showing/closing 我 content_frame 中的片段浏览我的应用程序,但是当我关闭最后一个片段时,它没有关闭应用程序,而是显示空白屏幕反而。我想我可以在 MvxAppCompatViewPresenter class 中解决这个问题,但我不知道如何解决?目前我的视图演示者中没有任何内容:

public class ViewPresenter : MvxAppCompatViewPresenter
{
    public ViewPresenter(IEnumerable<Assembly> androidViewAssemblies) : base(androidViewAssemblies)
    {
    }

    public override void Show(MvxViewModelRequest request)
    {
        base.Show(request);

    }

    public override void Close(IMvxViewModel viewModel)
    {
        base.Close(viewModel);
    }
}

这是第一个片段:

[MvxFragmentPresentation(typeof(LoginViewModel), Resource.Id.content_frame, true)]
[Register("myapp.droid.fragments.LoginSelectionFragment")]
public class LoginSelectionFragment : BaseFragment<LoginSelectionViewModel>
{
    protected override int FragmentId => Resource.Layout.fragment_login_selection;
}

您可以使用的方法之一是 通过设置 MvxFragmentPresentation 属性 [将作为起始片段的片段添加到后台堆栈 AddToBackStackfalse (如果不传递参数,false 也是默认值)。

想法是,对于第一个片段,您将依赖 activity 添加到后台堆栈。从本质上讲,第一个片段和 activity 可以被认为是相同的关于返回堆栈,消除了空白屏幕。

但是,这仅在不需要将起始片段添加到后台堆栈的情况下才有效,并且在相同的 activity 上下文中,稍后在导航流中。在 MvvmCross 的未来版本中,您可以通过更新的 IMvxOverridePresentationAttribute.

轻松克服此限制