コンテンツビューと左のナビゲーションドロワーは4ページに共通で、コンテンツビューには4つの異なるページ間をナビゲートする4つのアイコンがあります。コンテンツの表示を保持し、ナビゲーション・ドロワーを4ページすべてに残したい。 マスター詳細ページを作成し、マスターページを左ナビゲーションドロワーに設定し、毎回詳細ページを変更しています。 アンドロイドは複数のページ間を移動する際に一度にページを移動できるため、例外が発生しました。続き あなたがnew NavigationPage()
などの詳細を設定するので、あなたは、詳細ページからNavigation
を使用する必要があり、私のRootpageとContentViewページXamarin.formsの複数のページ間を移動しますか?
public class RootPage : MasterDetailPage
{
LeftNavigationPanel menuPage;
public RootPage(string detailSel)
{
menuPage = new LeftNavigationPanel(); //This is the left navigation class. rename later.
Master = menuPage;
if (detailSel.Equals(""))
{
var detail = new NavigationPage(new Tabpage());
Detail = detail; //homepage
detail.Icon = "leftnav.png";
App.navigation = detail.Navigation;
}
else if (detailSel.Equals("1"))
{
var detail = new NavigationPage(new Post());
Detail = detail; //homepage
detail.Icon = "leftnav.png";
App.navigation = detail.Navigation;
// System.Diagnostics.Debug.WriteLine("page1: " + Navigation.NavigationStack[Navigation.NavigationStack.Count-1]);
}
else if (detailSel.Equals("2"))
{
var detail = new NavigationPage(new TrackTabPage());
Detail = detail; //homepage
detail.Icon = "leftnav.png";
App.navigation = detail.Navigation;
// System.Diagnostics.Debug.WriteLine("page1: " + Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]);
}
}
}
ContentView
public partial class HomeContentView : ContentView
{
public HomeContentView()
{
InitializeComponent();
}
private async void read_click(Object sender, EventArgs e)
{
if (!((Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]) is Tabpage))
{
//await Navigation.PopAsync();
await Navigation.PushAsync(new RootPage(""));
// this.Navigation.PopAsync();
}
}
private async void post_click(Object sender, EventArgs e)
{
if (!((Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]) is Post))
{
System.Diagnostics.Debug.WriteLine("page: "+ Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]);
// await Navigation.PopAsync();
await Navigation.PushAsync(new RootPage("1"));
}
}
private async void track_click(Object sender, EventArgs e)
{
if (!((Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]) is TrackTabPage))
{
System.Diagnostics.Debug.WriteLine("page: " + Navigation.NavigationStack[Navigation.NavigationStack.Count - 1]);
// await Navigation.PopAsync();
await Navigation.PushAsync(new RootPage("2"));
}
}
private void play_click(Object sender, EventArgs e) { }
}
ルートページのコンストラクタではどうすればよいですか?私はそれをそのまま保つことができますか? – sid
これは、アプリ内でどのようにナビゲートするかによって異なります。 「通常の」ケースでは、新しいページをプッシュする「NavigationPage」が1つあります。これにより、ユーザーは後方にナビゲートできます。私の答えを更新しました – Joehl
私のアプリで..各メイン4ページに4つのアイコンが4つのメインページ間のナビゲーションを世話する常に配置されている...と機能は..あなたは現在のページから任意のページに行くことができますそれぞれのアイコンをクリックします。誰も決まった流れはありません。どうすればこのようなナビゲーションをすることができますか? – sid