Ответ 1
Вы можете использовать метод View.setSaveEnabled (boolean enabled)
.
Также можно отключить автоматическое сохранение состояния через xml
с помощью атрибута saveEnabled
android:saveEnabled="false"
У меня есть custom View
, который динамически добавляется несколько раз в одну активность.
Каждый из экземпляров пользовательского представления имеет помимо других вещей дочерний элемент TextView
.
TextView
имеет ID, и он одинаковый для каждого экземпляра представления.
Для каждого пользовательского экземпляра представления я устанавливаю разные Text
для TextView
при создании активности.
Когда я поворачиваю экран, активность воссоздается, но теперь каждый TextView
отображает те же Text
(текст такой же, как текст последнего экземпляра).
Это связано с тем, что сохранение и восстановление состояния экземпляра автоматически сохраняет некоторую информацию, но эта информация, очевидно, связана с идентификаторами и в моем случае создает проблему.
Есть ли способ отключить автоматическое сохранение состояния для определенных представлений?
Есть ли свойство или параметр или какое-либо обходное решение?
Вы можете использовать метод View.setSaveEnabled (boolean enabled)
.
Также можно отключить автоматическое сохранение состояния через xml
с помощью атрибута saveEnabled
android:saveEnabled="false"
если вам нужно применить setSaveEnabled для всей иерархии:
public static void SaveEnableViewAndChildren(this View view, bool val)
{
if (view == null)
return;
view.SaveEnabled = val;
var viewGroup = view as ViewGroup;
if (viewGroup == null)
return;
for (int i = 0; i < viewGroup.ChildCount; i++)
SaveEnableViewAndChildren(viewGroup.GetChildAt(i), val);
}