Изменение макета в Xamarin

#c# #xamarin #xamarin.android

#c# #xamarin #xamarin.android

Вопрос:

Я новичок в Xamarin. Я пытаюсь создать простую навигацию для приложения для Android.

У меня есть основной макет, который содержит кнопки навигации, а затем я включаю его в макет, который должен быть загружен с помощью:

 <include layout="@layout/activity_main" />
  

Затем я вызываю макеты с помощью кнопок навигации:

 public bool OnNavigationItemSelected(IMenuItem item)
    {
        switch (item.ItemId)
        {
            case Resource.Id.navigation_home:
                SetContentView(Resource.Layout.home_layout);
                return true;
            case Resource.Id.navigation_dashboard:
                textMessage.SetText(Resource.Layout.dashboard_layout);
                return true;
            case Resource.Id.navigation_settings:
                
                SetContentView(Resource.Layout.layout_settings);
                return true;
        }
        return false;
    }
  

Однако, когда я запускаю его, и вы нажимаете одну из навигационных ссылок, загружается первая, а последующие не загружаются.

Похоже, что он не обновляется после загрузки нового макета.

Комментарии:

1. Вы бы сделали это с фрагментами и с помощью транзакций фрагментов вместо замены contentView.

2. Нет ли способа сделать это с помощью contentView?

3. Это не рекомендуется, нет.

4. Вы здесь не помогаете себе. Ответ таков. Нет, это невозможно использовать SetContentView , потому что вы заменяете весь вид. Если у вас возникли проблемы с пониманием того, как работают фрагментные транзакции, создайте новый вопрос, описывающий эти проблемы и то, что вы пробовали.

5. Я имею в виду, я погуглил это и не нашел подходящего решения. Я думал, что это основная идея Stackoverflow — оказывать помощь тем, кто спрашивает, и, надеюсь, тем самым останавливать людей в будущем, задавая одни и те же вопросы. Но да, это место раньше было хорошим.