FreshMvvm-PopPageModel在Android上不起作用

时间:2019-05-22 17:47:52

标签: mvvm xamarin.forms freshmvvm

我有一个Xamarin.Forms应用,正在使用FreshMvvm框架。

如果我通过FirstPageModel的ViewIsAppearing方法执行此操作:

CoreMethods.PushPageModel<SecondPageModel>();

我进入“ SecondPageModel”。然后,当我进入“ SecondPageModel”时:

CoreMethods.PopPageModel(); 

或按返回键,或者按标题栏返回键在Android中不起作用(任何情况)。我正在使用FreshMasterDetailNavigationContainer。

在iOS中它可以正常运行,我回到FirstPageModel。

1 个答案:

答案 0 :(得分:0)

这是因为当页面开始显示在屏幕上时,将始终调用ViewIsAppearing。当您弹出第二页然后转到第一页时,第一页的ViewIsAppearing将再次触发。这导致了死循环,并禁止您的应用返回第一页。

添加属性以避免这种情况

bool isInitialized;
public FirstPageModel()
{
    // ...

    isInitialized = true;
}

protected async override void ViewIsAppearing(object sender, EventArgs e)
{
    base.ViewIsAppearing(sender, e);

    if (isInitialized)
    {
        await Task.Delay(100);
        await CoreMethods.PushPageModel<SecondPageModel>();
        isInitialized = false;
    }

}

iOS可能会优化此过程,但我仍然建议您添加此判断语句。

更新

当应用程序到达主线程时调用它。

protected override void ViewIsAppearing(object sender, EventArgs e)
{
    base.ViewIsAppearing(sender, e);

    if (isInitialized)
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            CoreMethods.PushPageModel<SecondPageModel>();
            isInitialized = false;
        });
    }           
}