当我将页面的新实例推送到导航堆栈上时,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());
}
}
答案 0 :(得分:0)
我也遇到过这个bug,认为是在OnAppearing函数中push一个新的modal引起的
解决方法是检查当前页面是否与 Saamer 上次评论中的页面不同,或者使用私人计数器检查打开次数