1

我有我遵循的条形码阅读器/扫描仪的教程。在ScannerPage中,当我单击一个按钮时,它会打开scanner并且读取后,它将使用 API 将结果传递给数据库并返回到ScannerPage. 我有这个错误Page must not already have a parent,但我不知道为什么。如何解决这个问题?

private async  void Button_Clicked(object sender, EventArgs e)
    {
        scanPage = new ZXingScannerPage();
        await Navigation.PushAsync(scanPage);
        scanPage.OnScanResult += (result) => 
        {
            Device.BeginInvokeOnMainThread( async() => 
            {
                await Navigation.PopAsync();
                //send something using WEB API
            });
        };
        await Navigation.PushAsync(scanPage);
    }
4

2 回答 2

1

您正在推动 scanPage 两次

    scanPage = new ZXingScannerPage();

    // this is not needed
    // await Navigation.PushAsync(scanPage);

    scanPage.OnScanResult += (result) => 
    {
        Device.BeginInvokeOnMainThread( async() => 
        {
            await Navigation.PopAsync();
            //send something using WEB API
        });
    };

    // navigate here, AFTER you have defined your OnScanResult handler
    await Navigation.PushAsync(scanPage);
于 2018-08-27T21:10:32.693 回答
0

你是await Navigation.PushAsync(scanPage);两次。

将其更改为:

private async  void Button_Clicked(object sender, EventArgs e)
{
    scanPage = new ZXingScannerPage();
    scanPage.OnScanResult += (result) => 
    {
        Device.BeginInvokeOnMainThread( async() => 
        {
            await Navigation.PopAsync();
            //send something using WEB API
        });
    };
    await Navigation.PushAsync(scanPage);
}
于 2018-08-27T21:10:30.190 回答