2017-04-19 114 views
0

我读过this线程和一些其他类似的错误,但不幸的是我仍然不知道如何解决我的问题。不支持Xamarin PushAsync方法

我应该开一家ZXScannerPage,这样我可以读取QR码的方法

protected override async void OnAppearing() 
    { 
     base.OnAppearing(); 

     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); // Here is the error    
    } 

我需要await Navigation.PushAsync(scanPage);呼叫

MainPage = new NavigationPage(<Something goes here>); 

前使用此功能,但我不能确定,其中这应该去,我应该喂什么参数

回答

1

PushAsync方法不支持,因为该应用程序的MainPage不是NavigationPage

创建覆盖OnAppearing方法的页面。在这个方法中使用你的代码。

当应用程序在App.xaml.cs启动或App.cs取决于项目类型,调用构造函数

MainPage = new NavigationPage(new YourPage()); 

这将调用OnAppearing方法在自己的网页和代码按下扫描仪一页。

编辑 U可以使用你的scannerPage像

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"); 
      }); 
     }; 
MainPage = new NavigationPage(scanPage); 

在这种情况下,扫描完成Navigation.PopAsync()后,不会在导航堆栈工作,因为只有一个页面(除NavigationPage)。

+0

好的,谢谢,所以我将需要创建一个名为YourPage.cs的新类/ –

+0

@BarneyCmberss是的。添加新的页面,而不是类(或者只是创建类并从页面继承)。 – puko

+0

这应该是我''scanPage'这是在'var scanPage = new ZXingScannerPage();' –

0

我想你想知道如何初始化和使用导航页面的功能,

使用PushAsync之前和PopAsync功能,你需要初始化一个新的导航页面,在你的应用中的一些网页。

MainPage = new NavigationPage(Something goes here);

可以使用一些基本的页面在你的应用,即登录页或欢迎页

public class App : Application 
{ 
    public App() 
    { 
    var nPage = new NavigationPage(new WelcomePage()); // or new LoginPage() 
    MainPage = nPage; 
    } 
} 

现在你已经初始化的导航页面的一些基本页面中设置的导航页面在App类的主页,您可以推送或流行其他页面,即您的扫描页面。