Предотвратить обновление активности при изменении ориентации фрагмента Android

Я разрабатываю приложение для Android, где я заменяю фрагменты по кликам. У меня есть отдельные проекты для ландшафтного и портретного режимов. Но проблема в том, что когда я меняю ориентацию, активность обновляется, а кнопка остается не нажатой, я пытался дать

android:configChanges="orientation|keyboardHidden"

Но бесполезно, поскольку для настройки размера экрана не использовались другие макеты, пожалуйста, предложите, как преодолеть это, не обновляя действие по изменению ориентации, но по-прежнему принимая другой макет.

3 ответа

Выше уровня API 12 нам нужно добавить screenSize также, чтобы предотвратить обновление вместе с ориентацией.

android:configChanges="orientation|keyboardHidden|screenSize"

Использование onSaveInstanceState сохранить состояние кнопки или любое другое состояние и восстановить его в onCreate используя предоставленный Bundle,

Если вы используете кнопку, которая является CompoundButton (лайк CheckBox), его состояние будет сохранено автоматически для вас.

Как сказал Горски , onSaveInstanceState и onViewStateRestored (для фрагментов) - это способ сохранить состояние фрагмента или активности.

onSaveInstanceState : вызывается, когда фрагмент приостановлен или остановлен

onViewStateRestored : вызывается, когда фрагмент возвращается

Бывший:

      @Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        outState.putParcelableArrayList(Keys.CURRENT_OPERATIONS.name(), operations);
        firstCall = true;
        super.onSaveInstanceState(outState);
    }

    @Override
    public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
        if (firstCall)
            operations = savedInstanceState.getParcelableArrayList(Keys.CURRENT_OPERATIONS.name());
        super.onViewStateRestored(savedInstanceState);
    }
Другие вопросы по тегам