在 Xamarin 窗体中使用推送模态异步时应用程序崩溃



我正在使用Xamarin表单,并且有一个选项可以在顶部栏中提供搜索。所以我们采用了一个工具栏项数组并逐个添加项

但是,双击搜索图标时,应用程序崩溃了。崩溃指示以下行

            ToolbarItems.Add (new ToolbarItem ("Info", Constants.SEARCH_ICON, () => Navigation.PushModalAsync (searchPage)));

以及显示的错误信息:

System.InvalidOperationException:页面不能已经有父级。

--- 你能帮帮我吗?

双击会导致PushModalAsync发生两次,非常快,从而导致问题。

相反,您可能希望执行类似操作,以防止双重导航,并在Task返回方法PushModalAsync 上正确使用await

// Define a new variable
bool canNavigate = true;
ToolbarItems.Add (new ToolbarItem ("Info", Constants.SEARCH_ICON, async () => {
    if(canNavigate)
    {
        canNavigate = false;
        await Navigation.PushModalAsync (searchPage)
        canNavigate = true;
    }
}));

最新更新