Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android设备上使用Xamarin.Forms的Zxing条形码扫描仪_C#_Android_Xamarin.forms_Zxing - Fatal编程技术网

C# Android设备上使用Xamarin.Forms的Zxing条形码扫描仪

C# Android设备上使用Xamarin.Forms的Zxing条形码扫描仪,c#,android,xamarin.forms,zxing,C#,Android,Xamarin.forms,Zxing,我正在尝试在带有xamarin表单的andorid设备上使用Zxing代码扫描仪。 创建了一个按钮以打开Zxing扫描仪页面 然而当我这样写的时候。它向我发送了一个未处理的例外: private void BtnPress_Clicked(object sender, EventArgs e) { goToScan(); } private async void goToScan() { var scanPage = n

我正在尝试在带有xamarin表单的andorid设备上使用Zxing代码扫描仪。 创建了一个按钮以打开Zxing扫描仪页面

然而当我这样写的时候。它向我发送了一个未处理的例外:

   private   void BtnPress_Clicked(object sender, EventArgs e)
    {
        goToScan();
    }

    private async void goToScan()
    {
        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);
    }
}
但是,如果将其移动到同步方式,则会出现以下错误:

System.InvalidOperationException:Android上不全局支持PushAsync,请使用NavigationPage

附上我的代码:

     private  void goToScan()
    {
        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
         Navigation.PushAsync(scanPage);
    }
}
如果我将Navagation.push async更改为PushModalAsync,如下所示: Navigation.PushModalAsync(扫描页)

我移动到Zxing扫描仪页面,但它不会开始扫描。(crusior事件不移动

我的主要活动如下所示:

[Activity(Label = "QRCode4", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        ZXing.Net.Mobile.Forms.Android.Platform.Init();
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(bundle);


        global::Xamarin.Forms.Forms.Init(this, bundle);
        LoadApplication(new App());
    }

    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
    {
        global::ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

请提供任何帮助,谢谢。

您缺少App.cs上的导航:

MainPage = new NavigationPage(new YourFirstPage());

与简单的
MainPage=new YourFirstPage();

相比,您缺少App.cs上的导航:

MainPage = new NavigationPage(new YourFirstPage());

不再是简单的
MainPage=new YourFirstPage();

谢谢这是解决我的问题的方法!继续阅读更多关于Xamarin表单页面的信息。谢谢这是解决我的问题的方法!继续阅读更多关于Xamarin表单页面的信息。