【发布时间】:2017-04-19 07:09:24
【问题描述】:
我在一个名为 QRPage.xaml.cs 的 Xamarin Forms 页面中有一个函数,它使用 ZXing 打开一个二维码阅读器
protected override async void OnAppearing()
{
base.OnAppearing();
var scanPage = new ZXingScannerPage();
scanPage.OnScanResult += (result) => {
// Stop scanning
scanPage.IsScanning = false;
// Pop the page and show the result
Device.BeginInvokeOnMainThread(() => {
Navigation.PopAsync();
DisplayAlert("Scanned Barcode", result.Text, "OK");
});
};
// Navigate to our scanner page
await Navigation.PushAsync(scanPage);
}
在我的 App.xaml.cs 中,我的主页也指向 QRPage.xaml.cs 并具有上述功能
MainPage = new NavigationPage(new QRPage());
似乎这个var scanPage = new ZXingScannerPage() 或await Navigation.PushAsync(scanPage) 被多次调用,当我关闭它时,会弹出一个新的,当应用程序最初加载时,它会崩溃,除非我最小化和最大化应用程序。
我做错了什么? OnAppearing() 是用于创建once-off 页面的错误函数吗?
【问题讨论】:
-
您在哪个页面 OnAppering() 中声明了此代码?
-
这是在
QRPage.xaml.cs中,使用MainPage = new NavigationPage(new QRPage());在App.xaml.cs中被定向为主页 -
是的,当您再次导航回 QRPage 时,将调用 onAppearing,因此最好保持某种状态,以便在 Navigation.PopAsync() 时不会创建扫描仪页面和导航发生
-
谢谢 Dinesh,你有什么建议吗?
标签: c# xamarin xamarin.forms zxing