Итак, у меня есть фрагмент - фрагмент A - который содержит объект - объект O - используемый для настройки TextViews и других элементов. Чтобы создать экземпляр фрагмента, я использую статический метод A.getInstance (O). Объект O является сериализуемым, поэтому я могу отправить его в новый экземпляр фрагмента A через Bundle, используя instance.setArguments и т. Д.Аргументы фрагмента не содержат данных после извлечения из backstack
Я извлекаю O в методе onCreate для A и настраиваю поля, используя O в onViewCreated. Все работает нормально, пока здесь. После I замените A другим фрагментом - фрагментом B - и перейдите обратно от B до A, аргументы Bundle не содержит объект O больше, и я получаю исключение NullPointerException. Сам Bundle не равно нулю, но она не содержит О.
Я использую этот метод для замены фрагментов:
public void replaceCurrentFragment(Fragment fragment) {
FragmentTransaction fragmentTransaction = context.getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, fragment).addToBackStack(null).commit();
}
Фрагмент А также отображается с помощью метода выше.
Что я делаю неправильно?
Вы восстанавливаете объект O только из 'Fragment # getArgumnets()'? Вы пытались сохранить и восстановить объект O из состояния экземпляра фрагмента? –
Я сохраняю объект O в экземпляре фрагмента A во время onCreate. Проблема в том, что я не получаю O второй раз, когда я вхожу в onCreate. –
Я имею в виду, вы переопределили Fragment # onSaveInstanceState, чтобы сохранить свой объект, а затем искать его в Bundle, переданный в onCreate (Bundle savedInstanceState)? –