Давайте назовем их фрагментом A и B. Фрагмент B - это просто подробное представление для A, которое заменяет фрагмент A при нажатии кнопки во фрагменте A.
Код замены:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, new DetailFragment());
transaction.addToBackStack(null);
transaction.commit();
Когда я теперь поверну экран во фрагменте B один раз и нажму «Назад», старый фрагмент A будет восстановлен без каких-либо проблем (он восстанавливает его состояние в onActivityCreated с помощью пакета savedInstanceState).
А теперь самое интересное ...
Когда я поворачиваю экран во фрагменте B более одного раза и нажимаю Back, я получаю исключение NullPointerException, потому что int[] data = savedInstanceState.getIntArray(STATE_DATA);
в onActivityCreated
возвращает null.
Как я могу исправить такое поведение? Единственный другой способ, который я использовал, - это постоянное хранилище (предпочтение или БД), но это кажется очень неподходящим для варианта использования.
редактировать / дополнительная информация: сам пакет не является нулевым, он просто пуст