【问题标题】:Bar code scanner page navigation issue条码扫描仪页面导航问题
【发布时间】:2018-08-27 21:07:18
【问题描述】:

我有我遵循的条形码阅读器/扫描仪教程。在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);
    }

【问题讨论】:

    标签: c# xamarin xamarin.forms zxing.net


    【解决方案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);
    

    【讨论】:

    • 错误消失了,但现在的问题是它不会回到ScannerPage。顺便谢谢你。我很感激。 :)
    【解决方案2】:

    你是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);
    }
    

    【讨论】:

    • 谢谢,但现在不回ScannerPage了。
    • 不确定这是否是同一个问题;-) ... scanPage 显示了吗?如果是这样,OnScanResult 会触发吗?
    • 抱歉。非常感谢
    • ScannerPagescanPage之前的页面?
    • 顺便说一句;这绝对值得另一个问题:您会吸引更多人更快地回答您的问题,因为它是新的和新鲜的:-)
    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多