2017-03-29 9 views
0

NavigationPageTabbedPageは、iOSでは動作しますが、Android(Xamarin Forms(2.3.3.193)with Prism(6.3.0)Xamarin Prism AndroidがTabbedPageを紛失したり、NavigationPageを変更したりすることはありません

私はsample project available hereを設定しました。

このアプリケーションは、3 NavigationPageTabbedPage(APage、BPAGEとCPAGE)にネストされているページやTabbedPageを失い、NavigationPage(B1PageがBPAGEを通じて利用可能です)おくべき4ページで構成されています。

NavigationService.NavigateAsync("NavigationPage/LayoutTabbedPage/APage");

Opening APage with navigation and tab bar on iOSともlooks fine on Android

クリックB1Pageを開く必要がある '追加'

BPage has an 'Add' button on the navigation barlooks fine on Android。これにはナビゲーションバーがあります(「追加」ではなく「保存」ボタン付き)が、タブバーはありません。

m_navigationService.NavigateAsync("NavigationPage/LayoutTabbedPage/BPage/B1Page");

しかしAndroid B1Pageにタブバーが残っていると、(代わりに、保存の[追加]ボタンで)元ナビゲーションバーがそうであるように。

何か問題がありますか?これらを矛盾させるナビゲーションを行っていますか?

答えて

2

はい、ナビゲーションに問題があります。まず、Tabbedページ内をナビゲートしてタブを維持したい場合、NavigationPage内のTabbedページではなくNavigationPage内にタブをラップする必要があります。このような何か:

<NavigationPage Title="B"> <x:Arguments> <local:BPage /> </x:Arguments> </NavigationPage>

これは、ヨーヨーは、実際のタブ内をナビゲートすることができます。

もしこれがあなたがやりたいことでないなら、あなたのタブページをナビゲーションページにラップしておき、そして次にB1Pageにナビゲートすると、NavigateAsync( "B1Page"、usemodalNavigation:false) `を使って非同期navコールを強制します。これにより、あなたはタブ付きページの外に出てくるでしょうが、戻る矢印とツールバーの項目を持つナビゲーションページ内にいます。

第2に、あなたのナビゲーションウリは混乱しています。プリズムでのナビゲーションは、あなたがそれを呼び出す場所に相対的です。

m_navigationService.NavigateAsync("NavigationPage/LayoutTabbedPage/BPage/B1Page");に電話をかけると、それらのページはすべてナビゲーションスタックに再度プッシュされます。あなたがアンドロイドであなたの背中のボタンを押すと、私が何を意味するかがわかります。

あなたがしなければならないのは、NavigateAsync( "B1Page");というBPageViewModelコールです。

あなたは正しい方向を指すはずです。

+0

私はタブ内をナビゲートしたくないので、ナビゲーションを相対的に修正して 'usemodalnavigation'パラメータを使用するのは、私が必要としたものでした。ありがとう、そしてプリズムに関するあなたのすべての仕事に感謝します! – Paddy

関連する問題