Как сохранить состояние фрагмента, когда пользователь перемещается между фрагментами в окне просмотра? - PullRequest
0 голосов
/ 18 ноября 2018

Я создаю приложение для Android, которое использует BottomNavigationViewEx, чтобы иметь виджет «Нижняя навигация» с 5 разделами / фрагментами, я управляю ими с помощью видового пейджера, но один из этого фрагмента (фрагмент № 3) также использует макет вкладки для вложения еще 2 фрагмента, и мне нужно сохранить выбранную вкладку, когда пользователь переходит к другому фрагменту с помощью значков BottomNavigation.

Проблема в том, что мне нужно сохранить состояние фрагмента № 3 (просто, чтобы упростить его, я называю их в этом пост-фрагменте №), то есть фрагменте, который содержит табуляцию.

Внутри фрагмента № 3 Я звоню:

   override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)


    outState.putInt("currentDirectoryFragmentId",tabLayout!!.selectedTabPosition)
}

но метод никогда не вызывается и имеет смысл, потому что я действительно никогда не уничтожаю родительскую активность, но onDestroy() вызывается внутри каждого фрагмента правильно.

Итак, как я могу сохранить состояние фрагмента, когда пользователь перемещается между фрагментами, являющимися потомками одного и того же действия?

1 Ответ

0 голосов
/ 19 ноября 2018

Как указано в комментариях. Это можно сделать, используя переменную внутри родительского действия, а также указав и установив эту переменную внутри методов фрагментов * onPause() & onResume().

Внутри родительской деятельности

public static int position = -1;

Внутренний дочерний фрагмент

@Override
public void onPause() {
    super.onPause();
    MainActivity.position = viewPager.getCurrentItem();
}

@Override
public void onResume() {
    viewPager.setCurrentItem(MainActivity.position);
    super.onResume();
}
...