Подтвердить что ты не робот

Фрагмент 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() фрагмент не вызывается со значением связности. Но иметь дело с этим. Любая помощь будет оценена.

4b9b3361

Ответ 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
        }
    }

Пожалуйста, попробуйте... я надеюсь, что это сработает