Android сохранить выбранную вкладку в виде вкладок - PullRequest
0 голосов
/ 06 февраля 2020

Я пишу приложение с вкладками Android. На каждой из вкладок есть списки, по которым можно щелкнуть для получения дополнительной информации (это запустит новое действие).

При каждом запуске нового действия представление вкладки забывает, какая вкладка была выбрана. Я предполагаю, что лучший способ сохранить выбранную вкладку - savedInstanceState, но состояние не загружается должным образом. До сих пор я использую следующую логику c (я использую Xamarin. Android, поэтому код C#, а не Java):

// to save
public override void OnActivityCreated(Bundle savedInstanceState)
{
    base.OnActivityCreated(savedInstanceState);

    if (savedInstanceState != null)
    {
        TabLayout layout = Activity.FindViewById<TabLayout>(Resource.Id.tab_layout);
        TabLayout.Tab tab = layout.GetTabAt(savedInstanceState.GetInt(STATE_SELECTED_TAB));
        tab.Select();
    }
}

// to load
public override void OnSaveInstanceState(Bundle outState)
{
    base.OnSaveInstanceState(outState);

    TabLayout layout = Activity.FindViewById<TabLayout>(Resource.Id.tab_layout);
    outState.PutInt(STATE_SELECTED_TAB, layout.SelectedTabPosition);
}

Моя логика c выглядит нормально, но savedInstanceState в OnActivityCreated всегда равно нулю.

Также обратите внимание, что это все внутри фрагмента, а не непосредственно в Activty.

Я также нашел этот ответ , в котором говорится, что для загрузки состояния фрагмента активность этого фрагмента должна выполнять дополнительную работу. Однако я не думаю, что решение из этого ответа можно использовать в моем случае, потому что фрагмент добавляется из файла макета XML, а не программно.

...