gpt4 book ai didi

mvvm - FreshMvvm-PopPageModel在Android上不起作用

转载 作者:行者123 更新时间:2023-12-03 11:02:00 24 4
gpt4 key购买 nike

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

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

CoreMethods.PushPageModel<SecondPageModel>();

我去了“SecondPageModel”。然后,如果我在“SecondPageModel”中,则执行以下操作:
CoreMethods.PopPageModel(); 

或按向后硬按钮,或按标题栏向后按钮在Android中不起作用(任何情况)。我正在使用FreshMasterDetailNavigationContainer。

在iOS中可以正常使用,我回到FirstPageModel。

最佳答案

这是因为当页面开始在屏幕上显示时,将始终调用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;
});
}
}

关于mvvm - FreshMvvm-PopPageModel在Android上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56262354/

24 4 0
文章推荐: c# - 从 TextBlock 样式设置多边形可见性
文章推荐: c# - 将模型类的列表/集合/IEnumerable 绑定(bind)到数据网格并选择列
文章推荐: android - 如何解决ViewModel RunTimeException
文章推荐: c# - 包含List 作为项目源的DisplayMember组合框