Сохранение расширенного представления

#android

#Android

Вопрос:

У меня есть действие, которое раздувает TextView, Button из другого XML при нажатии кнопки. Таким образом, при повторном нажатии создается несколько текстовых представлений и представлений кнопок. Я хотел бы сохранить текущее состояние сгенерированного макета таким, какое оно есть, чтобы при следующем запуске приложения в нем отображались ранее расширенные представления. В настоящее время расширенные представления удаляются при перезапуске приложения.

Есть ли способ сохранить увеличенный макет?

Я попытался инициализировать логическое значение перед методом onCreate.

 private Boolean b=false;
  

Затем установите для него значение True в методе onclick кнопки.

Затем переопределите метод onSaveInstance следующим образом:

 public void onSaveInstanceState(Bundle savedInstanceState) 
{
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean("inflate", b);
}
  

Затем переопределите метод onRestoreInstanceState следующим образом:

 public void onRestoreInstanceState(Bundle savedInstanceState) 
{
super.onRestoreInstanceState(savedInstanceState);
Boolean z = savedInstanceState.getBoolean("inflate");
if (z == true)
     onClick(btn);//Here btn==button view of the button clicked to inflate the layout
}
  

Но, похоже, это не работает. Любая помощь приветствуется.

Ответ №1:

Вам нужно будет сохранить ваше логическое значение в SharedPreferences (которое будет сохраняться между закрытием приложения).

Используемый вами в данный момент метод (с использованием состояния onSavedInstance) будет работать только тогда, когда приложение отправляется в фоновом режиме (или экран поворачивается, когда приложение находится на переднем плане).

Вы не можете (и не должны) сохранять объект View, но можете легко сохранить логическое значение в постоянном хранилище (опять же, SharedPrefences отлично подойдет), а затем заново создать представление на основе этого состояния.