2017-06-18 107 views
0

我正尝试使用xamarin格式的andorid设备上的Zxing代码扫描仪。 创建了一个按钮来打开Zxing扫描仪页面。Zxing使用Xamarin.Forms的Android设备上的条码扫描器

但是,当我这样写。如果我将它移动到同步方式,我得到这个错误

​​

但是:

System.InvalidOperationException:未在Android的全球支持PushAsync,请使用NavigationPage其发送到我的unhandel exceptoin。

附着我的代码:

 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异步到PushModalAsync这样的: Navigation.PushModalAsync(scanPage);

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

我主要的Andorid活动看起来是这样的:

[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); 
    } 
} 

appericate任何帮助的感谢

回答

2

你缺少对App.cs导航:

MainPage = new NavigationPage(new YourFirstPage()); 

而不是简单地MainPage = new YourFirstPage();

+0

由于这是在解决我的问题!去ŧ o详细了解Xamarin表单页面。 –