Xamarin portable, how to navigate back from selected list item to MainPage and pass value
<p>My previous question was, how to navigate from ToolbarItem to another page and keep navigation bar existing. : <a href="https://stackoverflow.com/questions/37255097/xamarin-portable-project-navigate-with-toolbaritem-to-another-page-by-using-mast">Xamarin portable project navigate with ToolbarItem to another page by using MasterDetailPage</a>
Now I have troubles when I select item from item list and I want to back to my MainPage, but I am getting such a error: <code>System.Exception: Android only allows one navigation page on screen at a time</code> and MainPage page appear, but it freeze and I see now 2 buttons on navigation bar. But it should be only one.Here in MainPage I am calling Cities:</p>

<pre><code>public partial class MainPage : MasterDetailPage
    { public MainPage()
        {
            InitializeComponent();
            masterPage.ListView.ItemSelected += OnItemSelected;
            CityClick.Clicked += async (sender, e) =&gt;
            {
                await Detail.Navigation.PushAsync(new Cities());
            };}}
</code></pre>

<p>Then when I am at Cities.xaml.cs I want to back to MainPage(). And also I want pass my selected item value from list to my label in MainPage.xaml navigation. Second  problem is when I am returning from Cities.xaml.cs after item select to MainPage() I am getting that error which I mentioned before. This is my Cities class:</p>

<pre><code>public partial class Cities : ContentPage
    {
        public Cities()
        {
            InitializeComponent();
            Label header = new Label
            {
                Text = ...
            };
            List&lt;City&gt; cities = new List&lt;City&gt;
            {new City("City1"),
             new City("City2")};

            ListView listView = new ListView
            {ItemsSource = cities,
                ItemTemplate = new DataTemplate(() =&gt;
                {
                    Label nameLabel = new Label();
                    nameLabel.SetBinding(Label.TextProperty, "Name");
                    BoxView boxView = new BoxView();
                    return new ViewCell
                    {
                        ...
                    };
            ...
            {
                Children =
                {
                    ...
                }
            };
            listView.ItemSelected += async (sender, e) =&gt;
            {
                if (e.SelectedItem == null)
                {return;}
                else
                {
                    await Navigation.PushAsync(new MainPage());
                }
            };
        }
        class City
        {public City(string name)
            {
                this.Name = name;
            }
            public string Name { private set; get; }
        };}
</code></pre>

<p>And this is how looks when returns to MainPage() it freeze everything and appear another label:</p>

<p><a href="https://i.stack.imgur.com/NCNUX.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NCNUX.png" alt="enter image description here"></a></p>

<p><strong>EDIT :</strong> Regarding @AkashAmin comments I changed from <code>await Navigation.PushAsync(new MainPage());</code> to <code>await Navigation.PopAsync();</code> and it is worked very well. Now I still have dilemma with pasiing value from City class to MainPage class.</p>