Проблема навигации по сканеру штрих-кода - PullRequest
0 голосов
/ 28 августа 2018

У меня есть этот учебник для сканера / сканера штрих-кода, которому я следовал. В 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);
    }

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

вы дважды нажимаете на 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);
0 голосов
/ 28 августа 2018

Вы 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);
}
...