Попытка вызвать виртуальный метод 'int java.util.ArrayList.size()' на ссылке нулевого объекта при получении сохраненного экземпляра фрагмента в onCreate

79
6

Я создал Activity и использовал FragmentStatePagerAdapter с двумя фрагментами.

В onSaveInstanceState я сохраняю оба фрагмента.

@Override
protected void onSaveInstanceState(Bundle outState) {
try {
getSupportFragmentManager().putFragment(outState,
BirthDetailInputFragment.class.getName(),
birthDetailInputFragment);
getSupportFragmentManager().putFragment(outState,
SearchBirthDetailsFragment.class.getName(),
searchBirthDetailsFragment);
} catch (Exception e) {
e.printStackTrace();
}
super.onSaveInstanceState(outState);
}

Так что я могу получить сохраненный экземпляр в onCreate(), как показано ниже.

if (savedInstanceState != null) {
try {

birthDetailInputFragment = (BirthDetailInputFragment) getSupportFragmentManager()
.getFragment(savedInstanceState,
BirthDetailInputFragment.class.getName());
searchBirthDetailsFragment = (SearchBirthDetailsFragment) getSupportFragmentManager()
.getFragment(savedInstanceState,
SearchBirthDetailsFragment.class.getName());
} catch (Exception e) {
e.printStackTrace();
}
} else {
searchBirthDetailsFragment = new SearchBirthDetailsFragment();
birthDetailInputFragment = new BirthDetailInputFragment();
}

Но когда я меняю ориентацию, она дает мне ниже исключения java.lang.NullPointerException: пытается вызвать виртуальный метод 'int java.util.ArrayList.size()' в ссылке на нулевой объект в вышеупомянутом блоке catch.

Любые рекомендации будут оценены.

спросил(а) 2021-01-19T18:17:20+03:00 9 месяцев, 1 неделя назад
1
Решение
92

сохранять данные в onSaveInstanceState. и восстановить данные в onRestoreInstanceState - не oncreate();

ответил(а) 2021-01-19T18:17:20+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема