#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 отлично подойдет), а затем заново создать представление на основе этого состояния.