Сохранение состояния View с помощью Icepick

305
09 августа 2017, 18:26

Внедряю альбомную ориентацию в приложение и уже убил пару дней на поиск способа по сохранению состояния вьюшек.

Помимо текста в EditText'ах, надо сохранять видимость других элементов. По умолчанию они Gone. Пользователь проводит некоторые операции, после чего скрытые вьюхи становятся Visible. Вот после поворота экрана необходимо, что бы эти вьюхи остались видимыми.

Пытаюсь реализовать это с помощью либы Icepick, но либо туториал вообще неинформативен, либо я тупой. Что в этот пример надо добавить, что бы сохранить видимость, к примеру, CardView?

class ExampleActivity extends Activity {
  @State String username; // This will be automatically saved and restored
  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Icepick.restoreInstanceState(this, savedInstanceState);
  }
  @Override public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Icepick.saveInstanceState(this, outState);
  }
  // You can put the calls to Icepick into a BaseActivity
  // All Activities extending BaseActivity automatically have state saved/restored
}

Сделал пока так:

boolean isViewVisible;
    @Override
        protected void onSaveInstanceState(Bundle outState) {
            outState.putBoolean("isViewVisible", isViewVisible);
            super.onSaveInstanceState(outState);
        }
        @Override
        protected void onRestoreInstanceState(Bundle savedInstanceState) {
            super.onRestoreInstanceState(savedInstanceState);
            if (savedInstanceState.getBoolean("isViewVisible")) {
                if (getResources().getBoolean(R.bool.isTablet) & getResources().getBoolean(R.bool.isLand)) {
                    view.setVisibility(View.VISIBLE);
                }
            }
        }

Нигде на SO не видел такого подхода. Это не корректно?

Answer 1

Укажите android:id для этих вьюх в разметке. Если вьюхи стандартные, то ОС сделает это за вас.

READ ALSO
Как преобразовать строку во время?

Как преобразовать строку во время?

Есть строка вида : "09:00 10:07" (она хранится в файле)Мне нужно считать время

345
иконпаки в кастомном лаунчере [требует правки]

иконпаки в кастомном лаунчере [требует правки]

Здравствуйте!Делаю кастомный лаунчерНаписал уже почти все функции, но возможность использовать иконпаки еще не сделал, как это возможно...

254
elasticsearch Failed to execute [org.elasticsearch.action.search.SearchRequest@467f2861]

elasticsearch Failed to execute [org.elasticsearch.action.search.SearchRequest@467f2861]

Прошу помочь с данной ошибкой, с ES работать начал недавноВ логах завалило такими ошибками

382
Ошибка в Forge (создание модов)

Ошибка в Forge (создание модов)

Меня направили сюда из другого форумаСуть в том, что выдаёт ошибку что он не распознал переменную JAVA_HOME, а точнее её путь (наверно)

239