Page.OnAppearing()触发两次

时间:2019-06-26 13:35:15

标签: forms xamarin

当我将页面的新实例推送到导航堆栈上时,OnAppearing()会触发两次,因此将创建两个DeliveryNotePicker页面。调用堆栈中没有任何东西可以给我任何线索。为什么会发生这种情况?

protected override async void OnAppearing()
{
    base.OnAppearing();
    MessagingCenter.Subscribe<ScannerMessages, Barcode>(this, "ScannerData", (sender, arg) =>
    {
        Device.BeginInvokeOnMainThread(() => { ItemScanned(arg.Value); });
    });
    try
    {
        if (picklist == null)
        {
            // Attempt to retrieve an existing picklist:
            picklist = (List<Pick>)Application.Current.Properties[PicklistProperty];
            branchName.Text = (string)Application.Current.Properties[BranchNameProperty];
            NextPick();
        }
    }
    catch (KeyNotFoundException)
    {
        // Create a new picklist:
        await Navigation.PushModalAsync(new DeliveryNotePicker());
    }
}

1 个答案:

答案 0 :(得分:0)

我也遇到过这个bug,认为是在OnAppearing函数中push一个新的modal引起的

解决方法是检查当前页面是否与 Saamer 上次评论中的页面不同,或者使用私人计数器检查打开次数