Фрагмент saveInstanceState приходит как null после изменения ориентации
У меня есть активность с вкладкой панели действий. Каждая вкладка содержит фрагмент. Теперь, когда я поворачиваю свое устройство, пакет в моем соответствующем фрагменте приходит как null. Это делается, когда я использую устройство Android Android 3.2, но это происходит, когда устройство Andoird3.0. У меня болит голова после работы над этим вопросом. Я перешел проверить различные ссылки на SO, но никакой помощи. Хотя я дал достаточно подробностей, все равно предоставит фрагмент кода, так как в разных случаях пользователь запрашивает фрагмент кода.
В моем классе фрагмента я сохраняю это значение
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putBoolean("textboxVisible", true);
}
это сохранение одной логической переменной, которую она извлекает, как показано ниже.
/**
* Function called after activity is created. Use this
* method to restore the previous state of the fragment
*/
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null)
{
//restore the state of the text box
boolean textboxVisible = savedInstanceState.getBoolean("textboxVisible");
if (textboxVisible)
{
//do some stuff
}
}
}
но после вращения savedInstanceState подходит как null.
Я не ошибаюсь. Я прочитал в некотором документе, что ниже 3.2 onCreateView()
фрагмент не вызывается со значением связности. Но иметь дело с этим. Любая помощь будет оценена.
Ответы
Ответ 1
если вы используете setRetainInstance (true), пакет savedInstance всегда будет null после изменения ориентации. Так что вы ничего не можете сэкономить, но что вы можете сделать, если вам нужно что-то сохранить, - это поместить его в элемент данных фрагмента, потому что setRetainInstance (true) сохраняет фрагмент и не уничтожает его, поэтому после устройство было повернуто, у вас будут одинаковые значения.
Ответ 2
Попробуйте получить savedInstanceState
в onCreate
Fragment
.
Как
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
if (savedInstanceState != null) {
// IT MUST NOT BE NULL HERE
}
}
Пожалуйста, попробуйте... я надеюсь, что это сработает