FragmentManager.getFragment() NullPointerException

Я использую библиотеку поддержки v4 и не могу сохранить состояние фрагмента.

@Override
protected void onSaveInstanceState(Bundle outState)
{
    ...
    if(mFragment != null)
        getSupportFragmentManager().putFragment(outState, "frag", mFragment);
    ...
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
    ...
    if(savedInstanceState != null)
    {
        //Here I get NullPointerException
        getSupportFragmentManager().getFragment(savedInstanceState, "frag");
    }
    ...
}

Когда я вызываю getFragment(), возникает исключение NullPointerException (savedInstanceState содержит запись с «фрагментом»).

Вот часть вывода logcat:

04-18 00:10:56.719: E/AndroidRuntime(14644): Caused by: java.lang.NullPointerException
04-18 00:10:56.719: E/AndroidRuntime(14644):    at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569)

Также я попытался вызвать getFragments(), который возвращает null. Это кажется мне странным.

Буду признателен за любую помощь!


Решение:

Я забыл использовать super.onSaveInstanceState(outState); внутри метода onCreate.


comment
Вы вызываете метод onSaveInstanceState внутри своей родительской активности? (см.)   -  person fllo    schedule 18.04.2014
comment
Да, очень глупо с моей стороны, забыл позвонить super.onSaveInstanceState(outState). Большое спасибо!   -  person Tzoiker    schedule 18.04.2014
comment
Пожалуйста. Рад, что теперь это работает.   -  person fllo    schedule 18.04.2014


Ответы (1)


Благодаря @Fllo. Проблема заключалась в том, что я забыл вызвать onSaveInstanceState() родительской активности.

@Override
protected void onSaveInstanceState(Bundle outState)
{
    //Added this and the problem was solved
    super.onSaveInstanceState(outState);
    ...
}
person Tzoiker    schedule 17.04.2014