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

Xamarin.android 关闭最后一个片段后关闭应用程序,xamarin.android,mvvmcross,Xamarin.android,Mvvmcross,我正在用Xamarin.Android和MvvmCross编写一个应用程序。我使用的是片段,有一个“内容容器”的设计,我在content\u框架中显示片段视图: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:local="http://schemas.android.com/apk/r

我正在用Xamarin.Android和MvvmCross编写一个应用程序。我使用的是片段,有一个“内容容器”的设计,我在
content\u框架中显示片段
视图:

<?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>
这是第一个片段:

[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(typeof(LoginViewModel),Resource.Id.content\u frame,true)]
[注册(“myapp.droid.fragments.LoginSelectionFragment”)]
公共类LoginSectionFragment:BaseFragment
{
受保护覆盖int FragmentId=>Resource.Layout.fragment\u登录\u选择;
}

您可以使用的方法之一是通过将
MvxFragmentPresentation
属性
AddToBackStack
设置为
false
false
如果没有传递参数,也是默认值)来
将开始片段添加到backbackbackbackbackback

这里的想法是,对于第一个片段,您将依赖于添加到backbackback的活动。本质上,第一个片段和活动可以被认为是与堆栈相同的,消除空白屏幕。
然而,只有在不需要将起始片段添加到backbackback时,这才有效,在相同的活动上下文中,稍后在导航流中。在未来版本的MvvmCross中,您可以通过更新的属性轻松克服此限制。

您可以使用的方法之一是通过将
MvxFragmentPresentation
属性
AddToBackStack
设置为
false
false
如果未传递任何参数,也是默认值)

这个概念是,对于第一个片段,你将依赖于被添加到堆栈中的活动。基本上,第一个片段和活动可以被认为是与堆栈相同的,消除空白屏幕。


然而,只有当起始片段不需要添加到backbackback时,这才有效,在相同的活动上下文中,稍后在导航流中。在未来版本的MvvmCross中,您可以通过更新的第三个bool参数
AddToBackStack
?另外,你的堆栈开始时是否总是有相同的片段?如果是,这个起始片段是否用于需要添加到backbackback的其他任何地方?我在我的应用程序中包含了第一个片段。如果我将第三个bool参数设置为false,我将无法返回o它。它不会总是我展示的第一个片段,也不会在其他任何地方使用它需要添加到backstack。您可以使用的方法之一是,不将开始片段添加到backstack。这里的想法是,对于第一个片段,您将依赖添加到backstack的活动基本上,第一个片段和活动可以被认为是与堆栈相同的,消除空白屏幕。但是,只有在不需要在相同的活动上下文中添加起始片段的情况下,这才起作用。我只是将第三个参数改为<代码> false <代码>,而我没有。我现在不知道为什么我第一次尝试它就不起作用了…谢谢!酷,我会把它放在回答中,我不确定你的后台堆栈是怎么工作的,所以我认为可能需要一些调整:“你的代码> MVXFrastPrime看起来像什么,特别是第三个bool参数
AddToBackStack
?此外,在堆栈的开头是否总是有相同的片段?如果是这样的话,这个起始片段是否在需要添加到backbackback的其他地方使用?我在我的应用程序中包含了第一个片段。如果我将第三个bool参数设置为false,我将无法返回到它。它并不总是我展示的第一个片段,也不会在需要添加到backbackback的任何其他地方使用。可以使用的方法之一是,不将开始片段添加到backbackback。这里的想法是,对于第一个片段,您将依赖于添加到backbackback的活动。本质上,第一片段和活动可以被认为是与堆栈相同的,消除空白屏幕。但是,如果启动片段不需要在相同的活动上下文中添加到后台堆栈中,这只会起作用。我只是将第三个参数改为<代码> false <代码>,我不再得到空白屏幕了。我不知道为什么我第一次尝试时它不起作用…谢谢!酷,我会把它放在回答中,我不确定你的后背是如何工作的,所以我想可能需要一些调整:)
[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;
}