2014-02-07 2 views
0

У меня есть 2 сериализуемых объекта, которые я хочу сохранить после восстановления моего фрагмента. Поэтому я сохранил их в onSaveInstanceState (объекты не обнулить здесь):Сохраненный пакет не содержит данных

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putSerializable(RENDERER, renderer); 
    outState.putSerializable(SERIES, series); 
} 

В OnCreate метод фрагмента я стараюсь, чтобы получить их из Bundle:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (savedInstanceState != null) { 
     renderer = (DefaultRenderer) savedInstanceState.getSerializable(RENDERER); 
     series = (CategorySeries) savedInstanceState.getSerializable(SERIES); 
    } 
} 

Проблема заключается в том, что «renderer» и «series» всегда имеют значение null после вызова getSerializable. Любые идеи почему?

+0

Вы сказали, что после того, как ваш фрагмент перестроен, но эти методы взяты из жизненного цикла активности. –

+0

может у вас putInt и посмотреть, работает ли его? –

+0

Я пробовал putString, и это сработало! Я действительно не понимаю ... – lebenlechzer

ответ

3

Вы переопределили метод onSaveInstanceState в FragmentActivity, который содержит этот фрагмент?
Если вы, то убедитесь, что он должен позвонить super.onSaveInstanceState(Bundle).

+0

Я не переопределял его. – lebenlechzer

+0

Тогда, пожалуйста, переопределите его. – Anuj

+0

Но все называется правильно. Я просто не могу присвоить значения переменным-членам. Только для локальных переменных. – lebenlechzer

Смежные вопросы