2016-08-09 5 views
0

3ページ、ページ1、ページ2、ページ3のPCLアプリケーションを作成しました。各ページにタイトルページ1、ページ2、ページ3があり、各ページ。次に、ボタンをクリックすると、ページ1からページ2にジャンプし、ページ2からページ3にジャンプするコードを以下のように記述します。 2ページボタンのクリックイベントハンドラでXamarin.Forms Android用に動作しないABCAナビゲーション

await Navigation.PushAsync(new Page2()); 

:3ページで次に

await Navigation.PushAsync(new Page3()); 

私は戻って、コードナビゲーションの下に使用し、ボタンのクリックイベントハンドラページ1ボタンのクリックイベントハンドラで

ページ2をエスケープして直接ページ1に移動します。

Navigation.RemovePage(Navigation.NavigationStack.ElementAt(1)); 
    await Navigation.PopAsync(); 

コードはiOSで完全に動作しますが、 AndroidでAndroidでは、1ページ目に戻っているように見えますが、1ページ目の表示はレンダリングされず、タイトルがなくなり、ボタンが消えてビューは基本的に空白になります。私はNexus 4 API19とAPI 22エミュレータでテストしましたが、その結果は同じです。

誰かが助けてくれますか?

+0

私はXamarin Forumから、このシナリオの 'Navigation.PopToRootAsync()'で直接動作するルートページに直接戻るために、以下のメソッドを使用しました。私はXamarinにこれを見てもらうためにバグを起こすつもりです – Adam

答えて

0

PushAsyncのみを使用してページをナビゲーションスタックにプッシュし、モーダル、タブ付きページ、マスター詳細ページなどがない場合は、Xamarin.Formsで直接サポートされる最適なソリューションはawait Navigation.PopToRootAsync()です。ルート以外のすべてのモーダルをナビゲーションスタックからポップします。しかし、最上位のモーダルスタックだけが考慮されます。

ナビゲーションスタックがモーダル、マスターディテールなどと複雑な場合は、MainPageプロパティを使用して直接行うことをお勧めします(つまり、ナビゲーションサービスで遊ぶ)。まず

Page1

MainPage = new Navigationpage(Page1()); 

にApp.csにMainPageを設定し、あなたがイベントでそうであるように、あなたがPage3ボタンイベントでPage3

を表示まで同じ操作を行い、次の操作を行います。

MainPage = new Navigationpage(Page1()); 

Page3およびPage2は、ナビゲーションスタックから削除されます。

欠点:Page1のコントロールの状態は維持されません。OnDisappearingイベントのいくつかの変数にそれを保存する必要があります。

+0

おかげさまでRohit、あなたのソリューションはうまくいきます。私は 'await Navigation.PopToRootAsync()'を使うことを提案しています。私の場合はこれが最善の選択です。 – Adam

+0

はい、あなたは正しいですが、PopToRootAsyncも使用できますが、唯一の問題はモーダルスタックも持っている場合だけです。それはあなたが何を説明しているかのように簡単な場合、その良い。帰ってくれてありがとう。私はそれをソリューションに追加します。 –

関連する問題