2017-04-19 30 views
0

私はthisスレッドと同様のエラーについていくつかのものを読んだことがありますが、残念ながら私の問題を解決する方法はまだ分かりません。Xamarin PushAsyncメソッドがサポートされていません

は、私はQRコードを読み取ることができるようにZXScannerPageを開く必要があります方法を持っている

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このアプリのメインページはではないのでサポートされていません。

OnAppearingメソッドをオーバーライドするページを作成します。このメソッドでは、コードを使用します。アプリケーションはApp.xaml.csまたはApp.csに始まっ

は、プロジェクトの種類によって異なり、コンストラクタで

MainPage = new NavigationPage(new YourPage()); 

を呼び出すこれは、スキャナのページを押し上げOnAppearingページにおける方法とあなたのコードを呼び出します。ナビゲーションスタックに(NavigationPage除く)1ページのみであるため、スキャンがNavigation.PopAsync(完了後 Uはこの場合

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

のようなあなたのscannerPageを使用することができます

EDIT)が動作しません。

+0

ありがとうございますので、YourPage.csという新しいクラスも作成する必要があります。/ –

+0

@BarneyChambersはい。クラスではなく、新しいページを追加します(または単にクラスを作成してPageから継承します)。 – puko

+0

これは 'var scanPage = new ZXingScannerPage(); 'の間に作られた私の' scanPage'でしょうか? –

0

私はあなたがあなたのアプリケーションにいくつかのページに新しいナビゲーション・ページを初期化する必要がありPushAsyncとPopAsync機能を使用する前に、ナビゲーションページの機能を初期化して使用する方法

を知りたいと思います。

メインページ=新しいナビゲーションページ(ここに何かが入ります);あなたは今、あなたはいくつかの基本的なページにナビゲーションページを初期化していることをアプリつまりログインページまたはWelcomeページ

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

にいくつかのベースページを使用してアプリケーションクラスであなたのメインページとしてナビゲーション・ページを設定することができます

他のページ、つまりスキャンページをプッシュまたはポップすることができます。

関連する問題