关闭最后一个片段后关闭app

问题描述 投票:0回答:1

我正在用Xamarin.Android和MvvmCross编写应用程序。我正在使用片段并有一个“内容容器”设计,我在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>

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

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;
}
xamarin.android mvvmcross
1个回答
2
投票

您可以使用的方法之一是不将通过将MvxFragmentPresentation属性AddToBackStack设置为false而将启动片段的片段添加到backstack(如果没有传递参数,则false也是默认值)。

这样的想法是,对于第一个片段,您将依赖于添加到Backstack的活动。从本质上讲,第一个片段和活动可以被认为与背板相同,消除了空白屏幕。

但是,这只有在起始片段不需要添加到backstack时才会起作用,在后面的导航流程中,在相同的活动上下文中。在MvvmCross的未来版本中,您可以通过更新的IMvxOverridePresentationAttribute轻松克服此限制。

© www.soinside.com 2019 - 2024. All rights reserved.